G'day,Warum wird diese beabsichtigte Interpolation als Division durch Perl interpretiert?
Warum erhalte ich die folgenden zwei Fehler vom folgenden Skriptfragment?
Argument "www4.mh.xxxx.co.uk.logstatsto20090610.gz" ist in der Division nicht numerisch (/) in Zeile 56
Argument „/logs/xxxx/200906/mcs0.telhc/borg2" ist beide Strings und die Verkettung der beiden Strings, zusammen mit dem Schrägstrich in der Mitte, wird auch nicht numerisch eingewickelt in Division (/) in Zeile 56
die Variablen $ dir und $ log werden mit Anführungszeichen.
foreach my $dir (@log_dirs) {
foreach my $log (@log_list) {
line 56: if (-s "$dir/$log") {
push(@logs, $dir/$log);
}
}
}
Edit: 56 Line ist auf jeden Fall die if-Anweisung. Doch Paul, du hast recht, rund um die Teilung auf Linie 57 mit Anführungszeichen das Problem behebt. Vielen Dank.
Edit: Die Perl-Version Linie 56 Berichterstattung ist
[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>
Edit: Verwendung Obwohl die Methode der interpolierten Strings in Perl, da die Variablen selbst Strings und ich versuche, sie zu verbinden zusammen mit einem Schrägstrich ist nicht die Netto-Ergebnis-String-Verkettung?
prost,
IMHO, sollten Sie zumindest vorgeben, die Fehlermeldung ernst zu nehmen und einen Blick auf die Zeile werfen, die den Fehler vor dem Posten verursacht. –
Die Erweiterung einer Variablen in einer Zeichenfolge in Perl wird als Interpolation bezeichnet. Wenn die Variablen jedoch Zeichenfolgen enthalten, ist der Nettoeffekt sicherlich eine Verkettung. Jees. –
Die Aktion des Operators/ist die Division in Perl.Wenn die Operanden momentan String-Typen sind, wird Perl versuchen, sie in einen numerischen Typ zu konvertieren - die fraglichen Strings sind nicht numerisch, daher erhalten Sie den Fehler –