Perl を使用して、外部の Perl スクリプトからすべてのグローバル変数をキャプチャするのが好きです。現在、私は型検出をぶらぶらしています。
正しいデータ型 (''、'SCALAR'、'HASH'、'ARRAY'、'CODE') を判別する方法は?
パーサー スクリプト:
my %allVariables = ();
{
do "scriptToBeParsed.pl";
foreach my $sym ( keys %main:: ) {
# Get all normal variables and scalar/hash/array references:
if ( ref( *{"$sym"} ) =~ m/^(?:|SCALAR|HASH|ARRAY)$/ ) {
$allVariables{"$sym"} = *{"$sym"};
}
}
}
解析するスクリプト:
$someVariable1 = 'Yes, I like to be captured';
$otherVariable2 = \'And I also want to be captured';
%anotherVariable3 = ( 'Capture' => 'me' );
@lameVariable4 = ( 'Capture', 'me' );
$fooVariable5 = { 'Capture' => 'me' };
$barVariable6 = [ 'Capture', 'me' ];
$subVariable7 = sub { return "Don't capture me!" };
sub dontCaptureMe { return "Don't capture me!" }
私の例では、ref( *{"$sym"} )
常に「GLOB」を返します(もちろん)。