我有一個關於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