2009-03-24 16 views
3

Cygwin Perl v5.8.8とWin32 :: TieRegistry 0.26を使用しています。なぜWin32 :: TieRegistryリストのサブキーができないのですか?

私たちは、HKEY_CURRENT_USERのために結ばれたハッシュオブジェクトの事を得ることができます。

$ perl -e ' 
my %RegHash; 
use Win32::TieRegistry(TiedHash => \%RegHash); 
use Data::Dumper; 
my $Key = $RegHash{"HKEY_CURRENT_USER"}; 
print Dumper $Key;' 
$VAR1 = bless({}, 'Win32::TieRegistry'); 

そして、これは、サブキーのために働く:

$ perl -e ' 
my %RegHash; 
use Win32::TieRegistry(TiedHash => \%RegHash); 
use Data::Dumper; 
my $Key = $RegHash{"HKEY_CURRENT_USER\\Software"}; 
print Dumper $Key;' 
$VAR1 = bless({}, 'Win32::TieRegistry'); 

を我々はキーの情報を印刷することができます

$ perl -e ' 
my %RegHash; 
use Win32::TieRegistry(TiedHash => \%RegHash); 
use Data::Dumper; 
my $Key = $RegHash{"HKEY_CURRENT_USER\\Software"}; 
print Dumper $Key->Information;' 
$VAR1 = 'CntSubKeys'; 
$VAR2 = 48; 
$VAR3 = 'MaxSubClassLen'; 
$VAR4 = 21; 
... 

しかし、ドキュメントでは、単にサブキーをハッシュとして扱うことによってサブキーをリストすることができます。

$ perl -e ' 
my %RegHash; 
use Win32::TieRegistry(TiedHash => \%RegHash); 
use Data::Dumper; 
my $Key = $RegHash{"HKEY_CURRENT_USER\\Software"}; 
print Dumper keys %$Key; ' 

しかし、配列は空です。それは壊れているのですか、何か間違っていますか?サブキーを一覧表示する別の方法はありますか?

これはどちらか動作しません:あなたのコードでは

$ perl -e ' 
my %RegHash; 
use Win32::TieRegistry(TiedHash => \%RegHash); 
use Data::Dumper; 
my $Key = $RegHash{"HKEY_CURRENT_USER\\Software"}; 
print Dumper $Key->SubKeyNames;' 
Can't use an undefined value as an ARRAY reference at 
/usr/lib/perl5/vendor_perl/5.8/cygwin/Win32/TieRegistry.pm line 720. 

答えて

2

:私は私のマシン上でこの結果を得る

my %RegHash; 
use Win32::TieRegistry(TiedHash => \%RegHash); 
use Data::Dumper; 
my $Key = $RegHash{"HKEY_CURRENT_USER\\Software"}; 
print Dumper keys %$Key; 

(WinXPの、ActiveStateのPerlのv5.10.0を、Win32の-TieRegistry 0.25) :

$VAR1 = 'Adobe\\'; 
... 
$VAR101 = 'Classes\\'; 
$VAR102 = '\\'; 

、これは私はあなたの2番目のコードサンプルを得るものです:

$VAR1 = 'Adobe'; 
... 
$VAR101 = 'Classes'; 

少なくとも、ActiveState PerlとWindows XPでは、どちらのコードサンプルも問題なく動作します。

EDITは:prlmnks.org上community.activestate.com

  • Win32::TieRegistry Error (or is it me?)

  • +0

    私は同じ問題を抱えていますcygwin perl 5.10.1とTieRegistry v0.25 – dsummersl

    関連する問題