-1

你好,我有一个看起来像这样的文本:

假设我有一个如下所示的电话号码:

39349562486245

和一个看起来像这样的文件中的条目:

1002978;ITM;39349;ITALIEN  MOBIL;5;0;414;177

现在数字的开头与那里的数字匹配我如何检查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;
            }
        }
4

1 回答 1

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
于 2013-02-11T14:16:40.243 回答