Variablen werden nur in Strings mit doppelten Anführungszeichen interpoliert "
. Wenn Sie einfache Anführungszeichen '
verwenden, wird die $
als ein Dollar interpretiert.
mit ">>$files"
Versuchen statt '>>$files'
Immer
use strict;
use warnings;
Es wird dazu beitragen, einige weitere Warnungen zu bekommen verwenden.
Auf jeden Fall auch Variablen deklarieren
my $files = "...";
Sie auch den Rückgabewert von open
überprüfen sollten:
open OUTFILE, ">>$files"
or die "Error opening $files: $!";
bearbeiten: Wie in den Kommentaren vorgeschlagen, eine Version mit den drei Argumente offen und ein paar andere mögliche Verbesserungen
#!/usr/bin/perl
use strict;
use warnings;
# warn user (from perspective of caller)
use Carp;
# use nice English (or awk) names for ugly punctuation variables
use English qw(-no_match_vars);
# declare variables
my $files = 'example.txt';
# check if the file exists
if (-f $files) {
unlink $files
or croak "Cannot delete $files: $!";
}
# use a variable for the file handle
my $OUTFILE;
# use the three arguments version of open
# and check for errors
open $OUTFILE, '>>', $files
or croak "Cannot open $files: $OS_ERROR";
# you can check for errors (e.g., if after opening the disk gets full)
print { $OUTFILE } "Something\n"
or croak "Cannot write to $files: $OS_ERROR";
# check for errors
close $OUTFILE
or croak "Cannot close $files: $OS_ERROR";
Sie können Perl :: Critic auch als nützliches Tool zur Überprüfung häufiger Probleme und Fehler im Perl-Code – Matteo
installieren. Sie sollten immer die Drei-Argument-Version von open mit lexikalischen Dateihandles verwenden. Öffnen Sie mein $ Dateihandle, >> , $ file oder die 'Horribly'; ' – dgw
Ich hatte Probleme mit Croak kompilieren. Verwenden Sie stattdessen sterben –