Home > Enterprise >  Limit the translation to just one word in a phrase?
Limit the translation to just one word in a phrase?

Time:08-15

Coming new to Perl world from Python, and wonder if there is a simple way to limit the translation or replace to just one word in a phrase?

In the example, the 2nd word kind also got changed to lind. Is there a simple way to do the translation without diving into some looping? Thanks.

The first word has been correctly translated to gazelle, but 2nd word has been changed too as you can see.


my $string = 'gazekke is one kind of antelope';

my $count = ($string =~ tr/k/l/);

print "There are $count changes \n";

print $string;         # gazelle is one lind of antelope    <-- kind becomes lind too!

CodePudding user response:

I don't know of an option for tr to stop translation after the first word. But you can use a regex with backreferences for this.

use strict;

my $string = 'gazekke is one kind of antelope';

# Match first word in $1 and rest of sentence in $2.
$string =~ m/(\w )(.*)/;

# Translate all k's to l's in the first word.
(my $translated = $1) =~ tr/k/l/;

# Concatenate the translated first word with the rest
$string = "$translated$2";

print $string;

Outputs: gazelle is one kind of antelope

  •  Tags:  
  • perl
  • Related