tente isso
#!/usr/local/bin/perl
$_=1;
print "Content-type: text/html\n";
print "Pragma: no-cache\n";
print "Cache-Control: no-store\n";
print "Expires: 1\n\n";
$entrada = ($ENV{REQUEST_METHOD} =~ /POST/i)? <STDIN>: $ENV{QUERY_STRING};
foreach $associacao (split "&", $entrada){
($nome, $valor) = split "=", $associaca;
$parametro{$nome} = valor;
}
if ($parametro{funcao} eq "cadastrar"){
escreve (%parametro);
}elsif ($parametro{funcao} eq "exibir"){
%dados = le();
imprime_dados();
}
sub escreve{
my dados = @_;
open (ARQ, ">>agenda.dat") or die "Arquivo Não Encontrado";
print ARQ '"', $dados{"nome"}, '";';
print ARQ '"', $dados{"idade"}, '";';
print ARQ '"', $dados{"endereco"}, '";';
close ARQ;
print qualquer~
<h3> Contato "$dados{"nome"}" adicionado com sucesso. </h3>
<a href="/cgi-bin/agenda.cgi?funcao=exibir"> Voltar e Exibir Cadastro</a></body></html>
~;
}
sub le{
my %dados;
open (ARQ, "agenda.dat");
while ($linha = <ARQ>){
($nome, $idade, $endereco) =
($linha =~ m:^\"(.*?[^\\])?\";
\"(.*?[^\\])?\";
\"(.*?[^\\])?\"; $:x);
if ($nome){
$nome =~ s/\\\"/\"/g;
$idade =~ s/\\\"/\"/g;
$endereco =~ s/\\\"/\"/g;
$dados{$nome}{"idade"} = $idade;
$dados{$nome}{"endereco"} = $endereco;
}
}
close ARQ;
return %dados;
}
sub imprime_dados{
print qualquer~
<html>
<head>
<title> Agenda</title>
</head>
<body>
<table border="0" width="100%">
<tr>
<td> Nome </td>
<td> Idade </td>
<td> Endereco </td>
</tr>
~;
foreach $nome (@nomes){
print "<!-- Contato $nome -->\n";
print "<tr>\n";
print "<td>", $nome, "</td>";
print "<td>$dados{$nome}{'idade'}\ </td>
<td>$dados{$nome}{'endereco'}\ </td>";
print "</tr>\n\n";
}
print qualquer~
</form></table>
</body></html>
~;
} abraços