http://qs1969.pair.com?node_id=439046


in reply to Re: print +split
in thread print +split

yes Roy, thanks but I intended to paste everything including use strict, but forgot. The missing $ was a mistake...sorry I have the same code and it is not subtracting the two values 62622 and 62535.
use strict; use warnings; use diagnostics; use MIME::Lite; use Logfile::Rotate; $ENV{"PATH"} = qq(/opt/SUNWsamfs/sbin:/usr/bin:/usr/sbin:/usr/local/lo +g); ########## ## Fuji ## ########## my $dev = qw/original1/; my $dev1 = qw/clinical1/; my $diff=0; open (FOO, "samcmd a $dev 2>\&1 |" ) || die "unable to open pi +pe... Broken? $!"; while (<FOO>) { if (/regular files|archdone files/) { local $, = "\n"; #s/^\w+(\s+)\w+(\s+)// && s/,//,; s/,//, print +(split)[2], $,; if (/^\d+/) { $diff -=$2; ##--## 62622 - 62535 # I dont really need this if b/c # I know what $_ contains after the split # which is the two numbers. } } } __DATA__ regular files 62,622 597.488G 641547379187 archdone files 62,535 597.008G 641032761295

Replies are listed 'Best First'.
Re^3: print +split
by chas (Priest) on Mar 13, 2005 at 02:30 UTC
    Try:
    while (<DATA>) { if (/regular files|archdone files/) { local $, = "\n"; s/,//; print +(split)[2], $,; $diff[++$i] = (split)[2]; } } print $diff[1]-$diff[2],"\n"; __DATA__ regular files 62,622 597.488G 641547379187 archdone files 62,535 597.008G 641032761295

    Your code wasn't performing a subtraction. Also, as Roy mentioned the /^\d+/ wasn't matching.
      Chas.... I understand now... my bad. Anyway it is printing the two elements of not computing the difference.
      root@stkv440-srvA [ / ]-> perl /usr/local/bin/ohiohealth/filecp_chk.OH +.pl 64696 64684 Difference is: 64696 - 64684
      I got it... I was a matter interpolation in my print statement. THANK YOU CHAS!!!! : ) Have a nice week!
        You 're welcome!
        I didn't see your print statement, but I'm sure I know what you mean. *Actually, you can imbed function calls within strings, although it isn't necessary here.* Look at:
        $diff[1]=62622; $diff[2]=62535; print $diff[1]-$diff[2],"\n"; print "$diff[1]-$diff[2]\n"; print "@{[$diff[1]-$diff[2]]}\n";
        chas
      hey chas... where are you defining $i in $diff++$i??? I am not followinf you logic. Will you please provide some psuedo code?