Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: Save all but line 32!

by cephas (Pilgrim)
on Sep 18, 2002 at 17:18 UTC ( [id://198922]=note: print w/replies, xml ) Need Help??


in reply to Save all but line 32!

perl -pe '$.-32or$_=$' -i file


cephas

Replies are listed 'Best First'.
Re: Re: Save all but line 32!
by jmcnamara (Monsignor) on Sep 19, 2002 at 07:59 UTC

    Very nice. ++

    I like the twisted logic but the best part is the bare $ at the end. I had to run it through B::Deparse to see what was happening:

    $ perl -MO=Deparse -pe '$_=$' LINE: while (defined($_ = <ARGV>)) { $_ = $; } continue { die "-p destination: $!\n" unless print $_; }

    It shows that in this case $ gets interpreted as $; the subscript separator. However, this means that your code inserts an extra character in the file as shown by this:     perl -pe '$.-32or$_=$' file | cat -A

    But I'm still not sure why perl inserts that semicolon. It doesn't in other cases:

    $ perl -MO=Deparse -pe '$_=$.' LINE: while (defined($_ = <ARGV>)) { $_ = $. } continue { die "-p destination: $!\n" unless print $_; }

    Anyone have an explanation for this last point?

    Update: blakem's answer below is right. This last case is a perl 5.005 issue with B::Deparse.

    --
    John.

      I seem to get the semicolon with your second case:
      % perl5.6.1 -MO=Deparse -pe '$_=$.' LINE: while (defined($_ = <ARGV>)) { $_ = $.; } continue { die "-p destination: $!\n" unless print $_; } % perl5.8.0 -MO=Deparse -pe '$_=$.' LINE: while (defined($_ = <ARGV>)) { $_ = $.; } continue { die "-p destination: $!\n" unless print $_; }
      Update: Response to above update: with 5.00503 I get:
      % perl5.00503 -MO=Deparse -pe '$_=$.' LINE: while (defined($_ = <ARGV>)) { $_ = $. } continue { die "-p destination: $!\n" unless print $_; }

      -Blake

Re: Re: Save all but line 32!
by Anonymous Monk on Sep 18, 2002 at 18:27 UTC
    won't "32or" get interpreted as a single token?
      won't "32or" get interpreted as a single token?

      No it won't.

      or32 would be seen as an identifier, though.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://198922]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (4)
As of 2024-03-29 13:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found