Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 将我的哈希应用于字符串以从字母中获取数字_Perl_Hash - Fatal编程技术网

Perl 将我的哈希应用于字符串以从字母中获取数字

Perl 将我的哈希应用于字符串以从字母中获取数字,perl,hash,Perl,Hash,我试图将字母转换成字母表中各自的数字。我有一个哈希,我认为应该工作,我只是不知道如何应用到我的字符串 字符串: my $string = "abc"; 还有我的杂烩: @hash{("a".."z")} = (1..26); 在这种情况下,如何将字符串设置为123? 更新:另一种没有散列的方法是使用 一般解决方案: my %lookup; @lookup{"a".."z"} = 1..26; my $pat = '(?:'.( join '|', map quotemeta, keys %

我试图将字母转换成字母表中各自的数字。我有一个哈希,我认为应该工作,我只是不知道如何应用到我的字符串

字符串:

my $string = "abc";
还有我的杂烩:

@hash{("a".."z")} = (1..26); 
在这种情况下,如何将字符串设置为123?

更新:另一种没有散列的方法是使用

一般解决方案:

my %lookup; @lookup{"a".."z"} = 1..26;
my $pat = '(?:'.( join '|', map quotemeta, keys %lookup ).')';

s/($pat)/$lookup{$1}/g;
假设关键帧最多由一个字符组成:

my %lookup; @lookup{"a".."z"} = 1..26;
my $class = '['.( join '', map quotemeta, keys %lookup ).']';

s/($class)/$lookup{$1}/g;
“硬编码”:


注意:两种方法都不处理字符在a..z之外的输入。这是个问题吗?
my %lookup; @lookup{"a".."z"} = 1..26;
my $pat = '(?:'.( join '|', map quotemeta, keys %lookup ).')';

s/($pat)/$lookup{$1}/g;
my %lookup; @lookup{"a".."z"} = 1..26;
my $class = '['.( join '', map quotemeta, keys %lookup ).']';

s/($class)/$lookup{$1}/g;
$string =~ s/([a-z])/ ord($1) - ord('a') + 1 /ge;