I know you didn't ask, but some of the code used here is not very secure. Other parts can be written better (if you plan to make the script portable)

Here is an updated version:

#!/usr/bin/perl use strict; # amen use warnings 'all'; # or use perl -w use File::Basename; $| = 1; # :raw for brain-dead OSes (or use binmode). open my $in, '<:raw', $ARGV[0]; # use $in not IN open my $out, '>:raw', "differences"; while (<$in>) { chomp; ($file,$problem,@machines) = split(/,/, $_); ($name,$path,$suffix) = fileparse($file,""); print "$name -- $path -- $suffix\n"; if($problem eq "different") { # get the file from the remote machine foreach $machine (@machines) { next if ($machine eq ""); # consider using File::Temp here $tempfile = "/tmp/" . $name . "_" . $machine; # should consider using File::Remote here system("rcp", "$machine:$file", $tempfile) == 0 or die "Execution (rcp) failed: $?"; # why not use Text::Diff ? print "comparing $name from $machine\n"; system("diff", $file, $tempfile) == 0 or die "Execution (diff) failed: $?"; print "(k)eep or (i)gnore this difference?\n"; $resp = <STDIN>; print ">>$resp<<\n"; if($resp eq "k") { print $out "$machine $file\n"; } } } }

Executing stuff is always insecure. You should either consider using taint mode (-T) or use Perl modules to perform the same task in most cases (in all cases in the example above)

Documents for these modules are here: File::Remote, File::Temp and Text::Diff. They are more or less simple to use, a lot safer and sometimes faster. (since they don't fork() and exec())

Update: Use chomp instead of chop.


In reply to Re: Reading from STDIN by holo
in thread Reading from STDIN by unstable_geek

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.