in reply to Re: Dealing with diff command within perl
in thread Dealing with diff command within perl
That would still write the whole DVD image to /dev/null in my imaginary case even though it's clear after the first line that there are in fact differences. If that's a real possibility, something like your idea but without reading the whole diff would probably be faster:$ret = system("diff >/dev/null -r $some_dir/$f $other_dir/$f"); if(0 == $ret) { # files are the same } elsif(1 == $ret) { # files differ } else { # Error from diff }
After the first line of output, diff gets a SIGPIPE because we closed it output and dies. One should probably check $? for errors from diff there, too.open(my $fh, '-|', "diff -r $some_dir/$f $other_dir/$f") or die "diff +: $!"; my $diff = <$fh>; close $fh; if($diff) { # there were diffs }
|
|---|