in reply to while loop, search & replace

The '1' being printed the return value of s///, which (in scalar context) is the number of substitutions performed (1, in this case). You're also unintentionally removing the word 'total'. Solution:

if(/^call started/){ s/^call.*total/Modem Line 0\/$i : total/; print OUT "$_\n"; $i++; }

Replies are listed 'Best First'.
Re^2: while loop, search & replace
by Anonymous Monk on Oct 01, 2004 at 18:42 UTC
    Thank you for your help. I'm still learning what "scalar" means. That solved my problem though. Cheers. PJT
      $a = something; # something is executed in a scalar context. @a = something; # something is executed in a list context. something; # something is executed in a void context. # Arrays return their number of elements in a scalar context: @b = qw( a b c ); print( @b , "\n"); # abc print(scalar(@b), "\n"); # 3 # print accepts a list, but scalar() forced scalar context. # Arithmetic forces scalar context: print(@b,"\n"); # abc print(@b."\n"); # 3 # Not just string arithmetic: print(@b, "\n"); # abc print(@b+0, "\n"); # 3 # Functions can examine their context: { local $, = ", "; local $\ = "\n"; print( localtime ); # 59, 14, 15, 1, 9, 104, 5, 274, 1 print(scalar(localtime)); # Fri Oct 1 15:05:32 2004 } # Refer to wantarray in perlfunc.