G'day、この補間がPerlによる除算として解釈されるのはなぜですか?
以下のスクリプトの部分で、次の2つのエラーが発生します。
引数 "www4.mh.xxxx.co.uk.logstatsto20090610.gz" はライン56
引数「/logs/xxxx/200906/mcs0.telhcで除算(/)内の数値はありません/ borg2 "は、行56の除算(/)では数字ではありません
変数$ dirと$ logは両方とも文字列であり、2つの文字列の連結は中央のスラッシュとともにラップされます引用符で囲みます。
foreach my $dir (@log_dirs) {
foreach my $log (@log_list) {
line 56: if (-s "$dir/$log") {
push(@logs, $dir/$log);
}
}
}
編集:ライン56は間違いなくif文です。しかし、ポール、あなたは正しく、引用符で囲まれた行57の部門を取り巻く問題が解決されます。ありがとう。
編集:ライン56を報告するPerlのバージョンが
[email protected]:/var/tmp/robertw> /usr/local/perl/bin/perl -v
This is perl, v5.6.1 built for sun4-solaris
Copyright 1987-2001, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'. If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.
[email protected]:/var/tmp/robertw>
編集です:Perlで補間された文字列の方法を使用してものの、変数は文字列そのものであり、私はそれらを結合しようとしていますことを考えますスラッシュ文字と一緒にネット結果の文字列の連結ではありませんか?
歓声、
IMHO、あなたは少なくとも、エラーメッセージを真剣に受け取り、投稿する前にエラーの原因となっている行を見ているべきです。 –
Perlで文字列内の変数を展開することを補間といいます。しかし、変数に文字列が含まれている場合、ネットエフェクトは必ず連結されます。 Jees。 –
/演算子の動作は、Perlの除算です。オペランドが現在文字列型の場合、Perlは数値型に変換しようとします。つまり、問題の文字列は数値ではないため、エラーが発生します。 –