At 10:21 AM 6/29/01 +1000, Sam Lander wrote:
> >> At a shell prompt / command line, enter:
> >>
> >>     perl -ne '/string/ or print' file
> >>
> >> where string is the string and file is the file.
> >
> >I prefer 'print unless /string/'.
> >As if it matters. ;o]
>
>I wanted to do this just today. Although, I want to tidy up the resulting
>line a bit by deleting everything before a colon, so I tried this:
>    perl -ne "/string/ &&  print s/.*://" file
>I was surprised that I got this:
>    1111111111111111111111111111111111111111111 (one '1' for each match)
>A bit of playing gave me:
>    perl -ne "/Recipient/ &&  s/.*:// && print"
>Which gave me what I wanted, but is rather unsatisfying (esp to the sedder
>in me).
>What do other people do? Shouldn't DWIM come into play here?

The trouble is that WYM is likely to be different for these cases:

if (s/foo/bar/) { ... }

print s/foo/bar/;

Perl 6 will be able to tell (easier) whether it's in a numeric or boolean 
context rather than a string context and maybe the designers will consider 
this possibility.  I know that I have repeatedly had to change a

         map s/foo/bar, ...
into a
         map { s/foo/bar/; $_ } ...

so it's not just what YM.

--
Peter Scott
Pacific Systems Design Technologies
http://www.perldebugged.com

Reply via email to