简单perl脚本

前端之家收集整理的这篇文章主要介绍了简单perl脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

#! /usr/bin/perl

use IPC::Open3;
use strict;
use warnings;

my $patchdir = "patch2.diff";
my $found = 0;

sub runstr {
 my @cmd=@_;
 print "cmd=@cmd\n";
 local $/;
 local (*PIPE);
 open3(fileno STDIN,\*PIPE,">/dev/null",@cmd);
 my $output = <PIPE>;
 close PIPE or $!==0 or die "can't run @cmd:$!\n";
 print "output: $output\n";
 return $output; 
}

sub findpatch{
 my ($cmd1,$cmd2,$cmd3) = @_;

 print "cmd1=$cmd1,cmd2=$cmd2,cmd3=$cmd3\n";
 my $current = runstr("pwd");
 $current =~ s/\n//g;
 print "current:$current\n";
 chdir($cmd1);
 my $out = runstr("cat",$cmd2);
 my $obj = $out =~ s/\n/\0/g;
 print "obj:$obj,out:$out\n";
 my $outfiles = runstr("cat",$cmd3);
 $outfiles =~ s/\n/\0/g;
 print "outfiles:$outfiles\n";
 foreach my $in (split/\0/,$outfiles) {
  print "in:$in\n";
  for (split/\0/,$out) {
   print "_sdddd:$_\n";
   if ($_ eq $patchdir) {
    last;
   }
   -e "$_/$in" or next;
   $found = 1;
   print "$_:found=$found\n";   
  }
  if ($found) {
   last;
  }
 }
 chdir($current);
 return $found;
}

if (findpatch("/home/xuan/linux/.pc","/home/xuan/linux/patches/series","/home/xuan/linux/patchfiles/files")) {  print "have found patch\n"; }

猜你在找的Perl相关文章