您好,我的文字如下:
让我说我有一个看起来像这样的电话号码:
39349562486245
和文件中的条目如下所示:
1002978;ITM;39349;ITALIEN MOBIL;5;0;414;177
现在Number的开头与那里的那个匹配,我如何检查是否以Perl中的那个数字开头。所以我到目前为止,但它做了很多工作:
zeile [5]是电话号码。
open( DATEIMAIN, "<$dateimainc" ) || die("Datei $dateimainc kann nicht geöffnet werden!");
my @zeilenMAIN = <DATEIMAIN>;
for(my $lineNMAIN = 1; $lineNMAIN < @zeilenMAIN; $lineNMAIN++)
{
@zeileMAINC = split( /;/, $zeilenMAIN[$lineNMAIN] );
if ($zeile[5] =~ /^$zeileMAINC[2]/)
{
$displaynameB = $zeileMAINC[3];
last;
}
}
答案 0 :(得分:1)
构建字符串前缀的哈希值,然后使用:
use warnings;
use strict;
#Load the lines of input data into a hash.
my %prefixes = map { chomp; split ';' } <DATA>;
my @numbers = ('39349562486245','123456789');
#Create a single regex like /^(12345|48956|...)/ for efficiency.
my $regex = '^(' . join('|',map{quotemeta} keys %prefixes) . ')';
for my $num (@numbers)
{
print "$num is $prefixes{$1}\n" if ($num =~ /$regex/);
}
__DATA__
39349;ITALIEN
12345;FOO