in reply to Re (tilly) 1: 'no such file' when it's there.
in thread 'no such file' when it's there.

sorry to yell, didn't think about changing that before poting last time.

maybe I'm just using it wrong, but $. doesn't seem to behave as I'd expect.

i did:

15 foreach my $line ( @newfile ) {
16 if ( $line =~ m!dienice\("\d+\b! ) {
17 $line =~ s!dienice\("\d+\b!dienice\("$. !i;
18 $test = 1;
19 } elsif ( $line =~ m!dienice\("\D+\b! ) {
20 $line =~ s!dienice\("(\D+)\b!dienice\("$. $1 !i;
21 $test = 1;
22 }

then printed to the old filename. it all works except all the numbers are 0. as in the replaced lines look like :

"...or dienice("0 Can't connect to Oracle database..."

where 0 is where one would expect the line number. there were no line numbers or incorrect ones before, so this is progress. i tried my old syntax with the $line_num++, and that works, but I'd much rather use your suggestion as it's cleaner. any ideas?

  • Comment on RE: Re (tilly) 1: 'no such file' when it's there.

Replies are listed 'Best First'.
RE: RE: Re (tilly) 1: 'no such file' when it's there.
by merlyn (Sage) on Aug 31, 2000 at 08:05 UTC
    $. is the line number on the most recent filehandle read, and reset when the file is closed. You're now wandering through an array, not reading a file, so the $. won't make any sense or correlation. If you want an element number, do this:
    for my $line (0..$#newfile) { .. access $newfile[$line] .. if error, talk about "line number $line" }

    P.S. in the future, please enclose your code in CODE tags. Much easier to read.

    -- Randal L. Schwartz, Perl hacker

      CODE! i was wondering how y'all did that...

      is there any advatage to using that over simply using a $line_num++ for each line i go through?

        Fewer chances for programmer error.

        Considering that I tend to be the programmer making the mistakes, I happen to like this one. :-)