我有一个关于perl的问题,我过去不用担心,但它现在正在扰乱我。为什么substr直接传入方法时工作方式不同?
我有一个方法调用saveItems,它接受来自文本日志的值并分析输入。
所以我有这几行的方法。
$intime = $_[1];
$timeHr = substr($intime, 0,2);
$timeMin = substr($intime, 2,2);
$timeSec = substr($intime, 5,2);
$object[$_[0]]->hr($timeHr);
$object[$_[0]]->min($timeMin);
$object[$_[0]]->sec($timeSec);
$ intime是传入此方法的时间值。 样品$银泰:0431:12
我的问题是,为什么上面没有给我任何错误,但是当我尽量缩短,像这样的台词:
$object[$_[0]]->hr(substr($intime, 0,2));
$object[$_[0]]->min(substr($intime, 2,2));
$object[$_[0]]->sec(substr($intime, 5,2));
只有第一个作品,而其余的给我一个字符串错误。
我相对比较新的perl,你可以看到,但任何人都可以给我一个答案吗?
编辑
样品HR:
sub hr {
my $self = shift;
if (@_) { $self->{HR} = shift }
return $self->{HR};
}
编辑
结案......阅读我的回答后
您能告诉我们您看到的确切错误吗? – codaddict 2011-02-01 06:39:26
“substr在字符串的外部:xx”.. 其中xx包含“$ object [$ _ [0]] - > min(substr($ intime,2,2));” – robobooga 2011-02-01 06:47:47
你会得到什么if你在每个substr后面添加`。''`? – 2011-02-01 06:51:04