#! /usr/bin/perl
 
use IPC::Open3;
 use strict;
 use warnings;
 
my $patchdir = "patch2.diff";
 my $found = 0;
 
sub runstr {
 ?my @cmd=@_;
 ?print "cmd=@cmdn";
 ?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: $outputn";
 ?return $output;?
 }
 
sub findpatch{
 ?my ($cmd1,$cmd2,$cmd3) = @_;
 
?print "cmd1=$cmd1,cmd2=$cmd2,cmd3=$cmd3n";
 ?my $current = runstr("pwd");
 ?$current =~ s/n//g;
 ?print "current:$currentn";
 ?chdir($cmd1);
 ?my $out = runstr("cat",$cmd2);
 ?my $obj = $out =~ s/n/ /g;
 ?print "obj:$obj,out:$outn";
 ?my $outfiles = runstr("cat",$cmd3);
 ?$outfiles =~ s/n/ /g;
 ?print "outfiles:$outfilesn";
 ?foreach my $in (split/ /,$outfiles) {
 ??print "in:$inn";
 ??for (split/ /,$out) { 
 ???print "_sdddd:$_n";
 ???if ($_ eq $patchdir) {
 ????last;
 ???}
 ???-e "$_/$in" or next;
 ???$found = 1;
 ???print "$_:found=$foundn";???
 ??}
 ??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 patchn"; }