est ici l'extrait pertinent de la documentation de la fonction ref
:
La valeur retournée dépend du type de chose la référence est une référence à. types BUILTIN comprennent:
SCALAR ARRAY HASH CODE REF GLOB LVALUE FORMAT IO VSTRING Regexp
Sur cette base, je l'imaginais que l'appel ref
sur un descripteur de fichier retournerait 'IO'
. Étonnamment, il n'a pas:
use strict;
use warnings;
open my $fileHandle, '<', 'aValidFile';
close $fileHandle;
print ref $fileHandle; # prints 'GLOB', not 'IO'
perlref
tente d'expliquer pourquoi:
Il est impossible de créer un véritable référence à une poignée IO (ou de descripteur de fichier DIRHANDLE) en utilisant l'opérateur backslash . Le plus que vous pouvez obtenir est une référence à un typeglob, qui est en fait une table de symboles complète entrée [...] Cependant, vous pouvez toujours utiliser globsfs de type et globrefs comme si elles étaient des poignées IO.
Dans quelles circonstances ref
retour 'IO'
alors?
I Je ne pense pas que l'extrait de "perlref" soit complètement pertinent ici, mais c'est le plus proche que je puisse trouver. – Zaid
http://stackoverflow.com/questions/1399833/how-can-i-get-perls-ref-function-to-return-ref-io-and-lvalue – Konerak