您好我正在尝试使用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;
}
什么都没打印出来。有人可以帮我解决这个问题吗?
由于
答案 0 :(得分:1)
你永远不会调用parseFileName()。可能my ($msgType, $OfaCode, $msgCount) = $parseFileName;
应为my ($msgType, $OfaCode, $msgCount) = parseFileName();
答案 1 :(得分:1)
您应该在程序开始时始终 use strict
和use warnings
,并使用my
在首次使用时声明所有变量。这尤其适用于您在寻求代码帮助时,因为此措施可以快速揭示许多简单的错误。
从代码的外观来看,您似乎应该使用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