GMF文件中ELSIF塊處理:正則表達式在Perl
TSTARTCUSTEVSUMMROW_GPRS
CUSTEVSUMMROW_GPRS GPRS - Subscriber Package (Paygo)|93452|MB|240|33952
CUSTEVSUMMROW_GPRS GPRS - MBB Plan (Paygo)|93452|MB|160|20128
TENDCUSTEVSUMMROW_GPRS
TSTARTCUSTEVSUMMROW_GPRS_SIMPLE
CUSTEVSUMMROW_GPRS_SIMPLE GPRS - LTE Roam Package|1529551|MB|85|260536
CUSTEVSUMMROW_GPRS_SIMPLE GPRS - LTE Roam Package|65461|MB|20000|1309252
TENDCUSTEVSUMMROW_GPRS_SIMPLE
代碼:
if ($line =~ m/^(CUSTEVSUMMROW_SIMPLE|CUSTEVSUMMROW_GPRS_SIMPLE|CUSTEVSUMMROW_GPRS|CUSTEVSUMMROW|CUSTPRODSUMMROW)\s(.*?)\|.*\|(.*?)$/) {
$tag = $1;
$lineTxt = $2;
$amt = $3;
if ($tag =~ m/^(CUSTEVSUMMROW|CUSTEVSUMMROW_SIMPLE)/) {
print "Processing some validations";
} else {
Print " Mapping failed";
} elsif ($tag =~ m/^(CUSTEVSUMMROW_GPRS|CUSTEVSUMMROW_GPRS_SIMPLE)/) {
if() {
#It has to do some validations.
} else {
#Failed;
}
}
}
當我嘗試處理elseif
條件無法處理。你能幫我解決這個問題嗎?
輸出:
Unable to map:CUSTEVSUMMROW_GPRS | GPRS - Data Only LTE Package Roaming | 34646.2272
Unable to map:CUSTEVSUMMROW_GPRS | GPRS - LTE Dealer1 Package Roaming | 34609.3312
Unable to map:CUSTEVSUMMROW_GPRS_SIMPLE | GPRS - Simple Subscriber Package 3 | 32.1899
Unable to map:CUSTEVSUMMROW_GPRS_SIMPLE | GPRS - Simple Talk and Text Package | 0.2702
帶'if()... else ... elsif()...'的代碼永遠不能執行elsif部分。它將執行前兩個條款之一。 – AdrianHHH 2014-09-10 18:51:33
您的輸出與您的輸入不符。在你的輸出中,標籤和標籤之間有一個「|」。你的輸入和代碼說有一個空間。 – Schwern 2014-09-10 19:58:51