Adriano Allora wrote:
> 
> Hi to all,

Hello,

> I need to substitute in a text a serie of word with another serie of
> word (for example: when I have the name I want the correct surname).
> Modifying a someone else script I wrote this one:
> 
> #!/usr/bin/perl -w
> 
> my $original = '(name1|name2)';
> my $new = '(surname1|surname2)';
> 
> $file_name = "ciccio.txt";
> 
> open (INPUT, $file_name);
> 
> while (<INPUT>)
> {
> s/$original/$new/g;
> $cortext .= $_;
> }
> 
> print $cortex;
> 
> close (INPUT);
> 
> (first)It doesn't work correctly (it substitutes each $original with
> the entire string "(surname1|surname2)"), and I'm not able to
> understand why.
> (second)Another thing: How can I write again, in a way more elegant,
> the part:
> 
> $cortext .= $_;
> }
> print $cortex;
> 
> for example having only
> 
> }
> print;



#!/usr/bin/perl -w
use strict;

my %names = (
    'name1' => 'surname1',
    'name2' => 'surname2',
    );
my $regex = qr/\b(@{[join '|', map "\Q$_", sort { $b cmp $a } keys %names]})\b/;

my $file_name = 'ciccio.txt';

open INPUT, $file_name or die "Cannot open $file_name: $!";

while ( <INPUT> ) {
    s/$regex/$names{$1}/g;
    print;
    }

close INPUT;

__END__



John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to