in reply to Array Element Substitution
#!/usr/bin/perl -w use strict; my $heredoc = <<END; This is a whole bunch of stuff with Jupiter and Mars and Earth and Venus and Saturn. Also could be Earth and Earth and something else like Neptune. END my $xlatedoc = <<END; Jupiter host1 Mars host2 Earth host3 END my %xlate; open (XLATE, '<', \$xlatedoc) or die "xlatedoc failed: $!\n"; while (<XLATE>) { my ($planet, $host) = split; #no chomp() needed $xlate{$planet}=$host; } close (XLATE); my @planets = keys %xlate; my $all_planets = join ('|',@planets); open (IN, '<', \$heredoc) or die "heredoc failed: $!\n"; while (<IN>) { s/($all_planets)/$xlate{$1}/g; # $all_planets is an OR expression # $1 winds up being which one of the OR'ed terms matched # that gets translated to the new term print; } __END__ This is a whole bunch of stuff with host1 and host2 and host3 and Venus and Saturn. Also could be host3 and host3 and something else like Neptune.
|
|---|