use constant APOSTROPHE => "\xE2\x80\x99" ;
my $string =~ s/APOSTROPHE/'/ ;
####
use constant APOSTROPHE => "\xE2\x80\x99" ;
my $string = "wjzw’xl cowuxze.";
$string =~ s/APOSTROPHE/'/ ;
####
my $pos = index $string, APOSTROPHE;
substr($string, $pos, length APOSTROPHE) = q{'};
####
#!/usr/bin/env perl
use 5.010;
use strict;
use warnings;
use utf8;
use open OUT => qw{:encoding(UTF-8) :std};
my $string1 = 'abc’def’ghi’jkl';
my $string2 = 'mno’pqr’stu’vwx';
say '*** BEFORE ***';
say "\$string1[$string1]";
say "\$string2[$string2]";
($string1, $string2)
= @{fancy_apos_to_ascii_apos(\($string1, $string2))};
say '*** AFTER ***';
say "\$string1[$string1]";
say "\$string2[$string2]";
sub fancy_apos_to_ascii_apos {
my (@fancies) = @_;
state $fancy_apos = '’';
state $fancy_apos_len = length $fancy_apos;
my $asciis = [];
for my $string (map $$_, @fancies) {
while ((my $pos = index $string, $fancy_apos) >= 0) {
substr($string, $pos, $fancy_apos_len) = q{'};
}
push @$asciis, $string;
}
return $asciis;
}
####
*** BEFORE ***
$string1[abc’def’ghi’jkl]
$string2[mno’pqr’stu’vwx]
*** AFTER ***
$string1[abc'def'ghi'jkl]
$string2[mno'pqr'stu'vwx]