Variables d'ensemble? Variables lexicales?
Les variables de package peuvent être consultées via la table de symboles. Essayez Devel::Symdump:
#!/path/to/perl
use Devel::Symdump;
package example;
$var = "value";
@var = ("value1", "value2");
%var = ("key1" => "value1", "key2" => "value2");
my $obj = Devel::Symdump->new('example');
print $obj->as_string();
Les variables lexicales sont un peu Tricker, vous ne les trouverez pas dans le tableau des symboles. Ils peuvent être consultés via le « scratchpad » qui appartient au bloc de code elles sont définies dans PadWalker Essayez.
#!/path/to/perl
use strict;
use warnings;
use Data::Dumper;
use PadWalker qw(peek_my);
my $var = "value";
my @var = ("value1", "value2");
my %var = ("key1" => "value1", "key2" => "value2");
my $hash_ref = peek_my(0);
print Dumper($hash_ref);
Je pense que Data :: Dumper pourrait être capable de faire cela, mais je ne sais pas comment. –
brian dit la vérité. La meilleure réponse est "ne pas" suivi de "pourquoi avez-vous voulu faire cela?" – Schwern
brian/Schwern, on dirait qu'il y a une nouvelle question là-bas, "meta programmation rights and wrongs". Pouvez-vous me montrer des questions ou des liens sur quand et pourquoi la «réflexion» comme celle-ci est-elle une mauvaise idée? Fondamentalement, je voudrais juste envelopper un perl existant avec un nouveau perl avec aucun changement à l'application existante –