Cal resaltar que, de forma semblant a altres llenguatges, a PERL hem d'identificar cada arxiu amb un manipulador o referència. Nosaltres farem servir lletres majúscules per a aquest identificador: ENTRADA, SORTIDA, ...
Primer cal obrir l'arxiu. Farem servir la funció open, on hem d'especificar l'identificador que farem servir d'ara en endavant i el nom físic de l'arxiu, amb el directori i la opció d'escritura si cal. Així per a obrir l'arxiu telefons.dat i associar-lo al manipulador DATOS farem:
Veiem un exemple que ens permet editar de forma remota un arxiu ASCII:
#!/usr/bin/perl
print "content-type: text/html\n\n";
if ($ENV{'REQUEST_METHOD'}eq "POST")
{
read(STDIN,$entrada,$ENV{'CONTENT_LENGTH'});
}
elsif ($ENV{'REQUEST_METHOD'}eq "GET")
{
$entrada= $ENV{'QUERY_STRING'};
}
else
{
$entrada= $ARG[0];
}
foreach (split(/\&/,$entrada))
{
($clave,$valor)=split(/=/,$_);
$clave =~ tr/+/ /;
$clave =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack
("C", hex ($1))/eg;
$valor =~ tr/+/ /;
$valor =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack
("C", hex ($1))/eg;
$parametro{$clave}=$valor;
}
$archivo=$parametro{'FICHERO'};
$archivo =~ s/%2F/\//g;
print "<html><head></head><body>";
print "<h2>Edició de $archivo</h2>";
print "<form action=\"escriu.cgi\" method=\"POST\">";
print "<input name=\"FICHERO\" type=\"hidden\"
value=\"$archivo\">";
print "<textarea name=\"CONTENIDO\" rows=\"12\"
cols=\"60\" >";
open (ENTRADA, "$archivo") || die "Error:
no es pot obrir el fitxer";
while ($linea = <ENTRADA>)
{
print "$linea";
}
close (ENTRADA);
print "</textarea><br>";
print "<input type=\"submit\" value=\"Desa'l\">";
print "</form>";
print "</body></html>";
Aquest script s'encarrega de desar l'arxiu (escriu.cgi):
#!/usr/bin/perl
print "content-type: text/html\n\n";
if ($ENV{'REQUEST_METHOD'}eq "POST")
{
read(STDIN,$entrada,$ENV{'CONTENT_LENGTH'});
}
elsif ($ENV{'REQUEST_METHOD'}eq "GET")
{
$entrada= $ENV{'QUERY_STRING'};
}
else
{
$entrada= $ARG[0];
}
foreach (split(/\&/,$entrada))
{
($clave,$valor)=split(/=/,$_);
$clave =~ tr/+/ /;
$clave =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack
("C", hex ($1))/eg;
$valor =~ tr/+/ /;
$valor =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack
("C", hex ($1))/eg;
$parametro{$clave}=$valor;
}
$archivo = $parametro{'FICHERO'};
$archivo =~ s/%2F/\//g;
$texto = $parametro{'CONTENIDO'};
open (SALIDA, ">$archivo") || die "Error: no
es pot obrir el fitxer";
print SALIDA $texto;
close (SALIDA);
print "<html><head></head><body>";
print "<h2>$archivo desat amb exit</h2>";
print "</body></html>";