简单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";
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值