0

您好,我正在尝试使用 Perl 脚本获取一些东西。

my $fileName = "I_Payment_OK_2";
my ($msgType, $OfaCode, $msgCount) = $parseFileName;

#my $msgType = $parseFileName;
print $OfaCode;
print $msgType;
print $msgCount;

# parse the values from filename
sub  parseFileName {
     # parse the message type
     if($fileName =~ m/^(I|O)/) {
        $var1 = $1;
     }  
     # parse the OFAC trace keyword
     if($fileName =~ m/^[A-Z_][A-Za-z_]([A-Z]+)\w(\d+)$/) {
        $var2 = $2;
        $var3 = $3;
     }
     # return the message type & OFAC trace
     return ($var1, $var2, $var3);
     #return $var1; 
}

什么都没有打印出来。任何人都可以帮我解决这个问题吗?

谢谢

4

2 回答 2

1

您应该始终 在程序开始时use strict使用. 这尤其适用于您寻求代码帮助时,因为此措施可以快速揭示许多简单的错误。use warningsmy

从您的代码的外观看来,您应该split改用它。

该程序在下划线处拆分文件名字符串,并提取第一个和最后两个字段。

use strict;
use warnings;

my $fileName = "I_Payment_OK_2";

my ($msgType, $OfaCode, $msgCount) = (split /_/, $fileName)[0, -2, -1];

print $msgType, "\n";
print $OfaCode, "\n";
print $msgCount, "\n";

输出

I
OK
2
于 2012-05-27T12:06:55.373 回答
1

你永远不会调用 parseFileName()。大概my ($msgType, $OfaCode, $msgCount) = $parseFileName;应该是my ($msgType, $OfaCode, $msgCount) = parseFileName();

于 2012-05-27T10:56:38.220 回答