A versão antiga de 2 argumentos de open
(ou seja, open FILEHANDLE,EXPR
) para abrir um arquivo em perl está obsoleta. Por motivos de segurança, deve ser substituído pela versão de 3 argumentos open FILEHANDLE,MODE,EXPR
. Porém, há um caso em que a versão com 3 argumentos se comporta de maneira diferente da versão com 2 argumentos:
2-arg open
interpreta o nome do arquivo especial -
como entrada padrão. Por exemplo, ambos
echo foo | perl -e 'open my $fh, "-"; $_ = <$fh>; print $_;'
e
echo foo | perl -e 'open my $fh, "<-"; $_ = <$fh>; print $_;'
produzir a saída foo
. Na versão de 3 argumentos, a interpretação especial de -
desapareceu, entretanto:
echo foo | perl -e 'open my $fh, "<", "-"; $_ = <$fh>; print $_;'
não imprime nada.
Qual é a maneira padrão ou recomendada de emular esse recurso de 2-arg open
usando 3-arg open
? (Na aplicação concreta, o nome do arquivo é um argumento do programa que pode ou não ser -
.)