in reply to Re^4: How do I pass $1 to s///?
in thread How do I pass $1 to s///?

You're using eval (disguised as do), so my point stands.

Replies are listed 'Best First'.
Re^6: How do I pass $1 to s///?
by Anonymous Monk on Jan 06, 2006 at 21:03 UTC
    ~/perl/monks$ cat foo.txt fish $1 ~/perl/monks$
    ...then...
    #!/usr/bin/perl open FOO, "<foo.txt"; $foo_from_file = <FOO>; foo("This is test 1\n", qr/test (.*)/, $foo_from_file); sub foo { (my $text = $_[0]) =~ s/$_[1]/interpolate($_[2],$1)/e; print $text; } sub interpolate { my ($str,@vars) = @_; $str =~ s/\$(\d+)/$vars[$1-1]/g; $str }
      You've just written your own template system. Why not use an existing one? There's even one that interpolates as Perl would. Like most homegrown template systems, yours has a bug. It doesn't provide a means of outputing "$1".