http://qs1969.pair.com?node_id=915688


in reply to $` $' in bash??

use English
perl -lane 'use English;$F[1]=~s/(chr\w[^_]?)_.*\b/$1/;print $PREMATC +H. "\t". $F[1] ."\t" .$POSTMATCH'

Replies are listed 'Best First'.
Re^2: $` $' in bash??
by ikegami (Patriarch) on Jul 20, 2011 at 18:12 UTC

    It's silly to keep using the bad variables instead of /p if you're going to use the English names.

    perl -lane '$F[1]=~s/(chr\w[^_]?)_.*\b/$1/p;print ${^PREMATCH}. "\t". +$F[1] ."\t" .${^POSTMATCH}'
      Actually, I never use English, so I am not sure what it is that you are saying.

      bad variables??

      What is the reason for using ${^PREMATCH} instead of $PREMATCH?

        I never use English, so I am not sure what it is that you are saying.

        You did in the post to which I replied.

        What is the reason for using ${^PREMATCH} instead of $PREMATCH?

        Quote perlre: "Once Perl sees that you need one of $& , $` , or $' anywhere in the program, it has to provide them for every pattern match. This may substantially slow your program."

        ${^PREMATCH} and the like are only set on demand (/p), so Perl doesn't need to preemptively populate it whenever you perform a match.