http://qs321.pair.com?node_id=965983


in reply to How do I replace \t and regarding to the alignment requirement ?

And without using the @LAST_MATCH_START variable, because I thought it was an evil which tainted any other regex used in the program (though I may be completely mistaken in this)
perl -Mstrict -we 'my $string="random\ttab\tseparated\twords"; sub tab2space{my ($string,$spacing)=@_; while($string=~/\\t/){ print $string,"\n"; my $index=index($string,"\\t"); $string=~s/\\t/" " x ($index %8)/e; } return $string} for (0..80){print $_ % 10;} print "\n", tab2space($string) , "\n";' 0123456789012345678901234567890123456789012345678901234567890123456789 +01234567890 random tab separated words
print "Good ",qw(night morning afternoon evening)[(localtime)[2]/6]," fellow monks."

Replies are listed 'Best First'.
Re^2: How do I replace \t and regarding to the alignment requirement ?
by AnomalousMonk (Archbishop) on Apr 22, 2012 at 16:02 UTC
    ... @LAST_MATCH_START variable ... an evil which tainted any other regex ...

    You may be thinking of  $& ($MATCH) and friends ($` and $'). While  @LAST_MATCH_START (@-) may share in the general overhead associated with capturing, I am not aware that it is touched by the evil of  $& and its ilk. And with 5.10+, the incantation of the /p regex modifier can raise even  $` $& $' to purity as the  ${^PREMATCH} ${^MATCH} ${^POSTMATCH} special variables. Oh, happy day!