Las variables se interpolan solo en cadenas usando comillas dobles "
. Si utiliza comillas simples '
, el $
se interpretará como un dólar.
intento con ">>$files"
en lugar de '>>$files'
Siempre utilizar
use strict;
use warnings;
Esto ayudará a conseguir más advertencias.
En cualquier caso declarar también las variables
my $files = "...";
También debe comprobar el valor de retorno de open
:
open OUTFILE, ">>$files"
or die "Error opening $files: $!";
Editar: Como se sugiere en los comentarios, una versión con los tres argumentos abierto y un par de otras posibles mejoras
#!/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";
También puede instalar Perl :: Critic, una herramienta útil para verificar problemas comunes y errores en el código Perl – Matteo
. Siempre debe usar la versión de tres argumentos de open con manejadores de archivos léxicos 'open my $ filehandle, '>>' , $ archivar o morir 'horriblemente'; ' – dgw
He compilado problemas con croak. Use morir en su lugar –