Jak escapovat $1 v perlu?
Pavel Lisý
pali na tmapy.cz
Pondělí Červenec 16 14:33:27 CEST 2007
Dobrý den
potřeboval bych poradit, jak napsat něco v perlu. Nemohu na to nějak
přijít a určitě je to jednoduché:
Chci zeditovat soubor
původně jsem v perl programu měl toto:
---------------------
sub sed_file
{
my($file, $sedcmd) = @_;
system("$sed -i -e $sedcmd $file");
}
&sed_file("$file","'s/^[^#]*-autorespond/# \&/g'");
---------------------
a to fungovalo bez problémů, přidalo to před řádek s "-autorespond"
komentář (#)
Nyní se pokouším to přepsat s využitím pouze perlu
---------------------
sub change_file
{
my($file, $pattern, $replace) = @_;
open(FILEOUT, ">$file");
foreach $line (@lines) {
$line =~ s/$pattern/$replace/g;
print FILEOUT $line ;
}
close(FILEOUT);
}
&change_file($file,"^\([^#]*-autorespond\)", "# \$1" );
---------------------
Bohužel je výsledkem řádek:
# $1
Protože nejsem v perlu moc doma, nemohu přijít na to, jak $1
vyescapovat, aby to funkce (s///) uvnitř sub "change_file" pochopila
jako normání argument a ne jako řetězec.
Můžete mi někdo poradit?
Pavel Lisý
Další informace o konferenci Linux