Hello Derek Am Sonntag, 6. März 2005 23.10 schrieb [EMAIL PROTECTED]: > I took everyone's advise and understood. thank you! The code
...marked with...? > ###- - -### solved it! > [cut alot away] > and these lines were still printed. So my solution was if ( $_ !~ "ANR*" > or $_ !~ "ANS*" ). > > I think this code is really cool and seems to be some type of trick? I > looked in my learning perl and programming perl books and did not find this > code as below. I spent now one and a half hour, nearly getting crazy, over this if-condition and the use of double quoted regexes... never saw this anywhere... endless tests, and "the thing" behaved as a regex should... and finally found this hint in perldoc perlop: [[ Binding Operators Binary "=~" binds a scalar expression to a pattern match. [...] If the right argument is an expression rather than a search pattern, substitution, or transliteration, it is interpreted as a search pattern at run time. Binary "!~" is just like "=~" except the return value is negated in the logical sense. ]] > I then noticed in another email thread that ##*## was > used. Are these related? Where can I find documentation on these? This was likely just a comment (although I don't know which thread you're talking about) greetings joe (thinking that it would be better if I got into the really dirty deep details of perl first before answering questions of others on this list again) [nothing new below] > An explanation of the line marked with ###--###: > > The regex searches for lines beginning with space(s), followed by at least > one > number before the line end. If this matches, the part after "and" is > executed, which sums up the number read into $total. > > thank you, > derek > > Derek B. Smith > OhioHealth IT > UNIX / TSM / EDM Teams > > > > > > John Doe > <security.departm > [EMAIL PROTECTED]> > To > beginners@perl.org > 03/05/2005 01:25 cc > PM [EMAIL PROTECTED] > Subject > Re: reg exp > Please respond to > security.departme > [EMAIL PROTECTED] > > > > > > > > Hi Derek > > > #!/usr/bin/perl > > > > ## Set pragmas (LC) and modules (UC) > > > > $^W = 1; > > use strict; > > use strict 'subs'; > > > > ## Begin Logic > > > > $ENV{"PATH"} = qq(/home/root:/usr/bin:/usr/sbin); > > > > my $w="40"; > > my $total="0"; > > my $outfile1 = qq(/home/root/tsm2_clients.out); > > my $outfile2 = qq(/home/root/tsm2_clients.plout); > > open (FF, "+<$outfile1") || die "could not open file: $outfile1 $!"; > > open (FFF, "+<$outfile2") || die "could not open file: $outfile2 $!"; > > system qq(dsmadmc -id=admin -password=st0rm "tsm:select node_name from > > nodes > $outfile1" > > ); > > system qq(dsmadmc -id=admin -password=st0rm "tsm:select count(*) > > node_name > > > from nodes >> $ > > outfile1" ); > > I don't know exactly what you want to achieve. > > Maybe your code above produces the outputfile "tsm2_clients.plout" > mentioned > in the top post (i have no idea about dsmadmc; if this is important, i cant > > help you), and now you want to trie to sum up the two numbers at the end of > > this file ("tsm2_clients.plout") > > If so, > > > # what happens when more nodes get added? > > John Krahn's code (cited under the next code snippet) does exactly that, > independent from the number of nodes/lines in "tsm2_clients.plout". > > > while (<FF>) { > > if ( $. > 6 ) { > > if ( $_ !~ "ANR*" or $_ !~ "ANS*" ) { > > print FFF $_; > > /^s+(\d+) $/ and $total +=$1; > > } > > } > > } > > print "Total Nodes on TSM1 and TSM2: $total\n"; > > Still, line 3 in the above code looks strange. > > > close (FF) or warn "error closing $outfile1: $!"; > > close (FFF) or warn "error closing $outfile2: $!"; > > > > > > I tried the code give by John Krahn as hightlighted and this did not > > work. > > > Thanks though... any other ideas? > > I ran John's code: > > bash-2.05b$ perl > use strict; > use warnings; > open FF, "<", "tsm2_clients.plout" or die $!; > > my $total; > while ( <FF> ) { > /^\s+(\d+)$/ and $total += $1; ###--### > } > print "Total = $total\n"; > > close (FF) or warn $!; > > > # output: > > Total = 460 > > > An explanation of the line marked with ###--###: > > The regex searches for lines beginning with space(s), followed by at least > one > number before the line end. If this matches, the part after "and" is > executed, which sums up the number read into $total. > > maybe $total could be initialized while declared, just for the case that > the > file is empty (which would produce a warning "Use of uninitialized value in > > print...": > my $total=0; # instead of just my $total; > > > I just saw Charles's anwer with a bunch of good tips I did not mention to > keep > short. > > greetings joe > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>