數據:(該\ n是隻爲理解隱含的)
Name :John van\n
\n
Email Address :[email protected]\n
\n
基於正則表達式:
use Data::Dumper;
my @data = m/Name\s*:([A-Za-z\s]*)\n\nEmail Address\s*:([A-Za-z\s]*@[A-Za-z\s]*.[A-Za-z]*)\n/g;
print Dumper @data;
會給
$VAR = [
John van,
[email protected]
]
如果你想讓它基於行的事,我的做法是:(未測試 - sharpshoot):)
my @data = (
'Name :john van',
'',
'Email Address :[email protected]',
''
);
my (@persons, $name, $email);
my $gotName = 0;
my $gotEmail = 0;
while(@data) { # data is your read in filehandle
if (/^Name/) {
$name = $_;
$name =~ s/.*://;
chomp($name);
$gotName++;
}
if (/^Email/) {
$mail= $_;
$mail=~ s/.*://;
chomp($mail);
$gotEmail++;
}
if ($gotName == 1 and $gotEmail == 1) {
push(@persons, ($name,$email));
$gotName = 0;
$gotEmail = 0;
}
}
有沒有更好的方法來解析文件以獲取電子郵件地址和 名稱?
作爲哪一個更好的方法?
如何處理字符串並重新排列它們。
是什麼問題?
請給我們輸入文件的一小部分..然後我可以幫你。 –
我已經提供了文件摘錄作爲例子在我的問題 – user2878260