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