-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 に答える