Hey,
Was bedeutet die Meldung Useless use ....?
http://perldoc.perl.org/perldiag.html#Useless-use-of-%25s-in-void-context
benutze in Zukunft use diagnostics;
an Stelle von use warnings;
, wenn du die Meldungen erklärt haben möchtest.
Ist dies die Ursache des Fehlers?
Nein, die Ursache liegt in der Verwendung des ||
-Operators. Du berechnest einen logischen Ausdruck, aber stellst nichts mit dem erhaltenen Ergebnis an. Normalerweise fängt man das in einer Variable auf oder schreibt es weg. Beispiel:
my $result = $one || $other;
print $one || $other;
In deinem Ausdruck verpufft das Ergebnis in heißer Luft.
$one || $other;
So. Das eigentliche Problem ist, dass du den falschen Operator verwendet hast. Du sollst or
verwenden, der bindet nicht so stark wie ||
(siehe dazu die Rangreihenfolge der Operatoren). Wenn du das nächste Mal mit Dateien arbeitest, halte dich an die Stilregeln und formuliere so:
{
open my $incfile, '<', 'meta.inc' or die "could not open meta.inc for reading: $!";
@myinctext = (<$incfile>);
close $incfile;
};
print $myinctext[0];
Benutze Skalare statt immer global gültiger Filehandle-Bezeichner. Beschränke den Gültigkeitsbereich von Variablen auf das Nötigste. Benutze die 3-Argumente-Form von open
. Benutze or
, um Fehlermeldungen anzuketten. Schreibe genaue und aussagekräftige Fehlermeldungen. Schreibe $!
, um die Betriebssystemfehlermeldung nach einem Systemaufruf wie open zu erhalten. Benutze () um den <>-Operator, um Listenkontext zu erzwingen. Vermeide unnötige Stringifizierung von Einzelausdrücken. Notiere indizierte Listen mit $, nicht @.
Die Stilregeln kannst du nachlesen in http://perldoc.perl.org/perlstyle.html, http://www.ora.de/catalog/pperl3/ und http://www.ora.de/catalog/perlbpger/.
水-金-地-火-木-土-天-海-冥