3

この部分はPerlプラグインから取得しました。私はそれが何をするのか理解していません。それは連想配列の配列ですか?もしそうなら、それは@で始めるべきではありませんか?誰かがこの問題に光を当てることができますか?

my $arguments =
  [ { 'name' => "process_exp",
    'desc' => "{BasePlugin.process_exp}",
    'type' => "regexp",
    'deft' => &get_default_process_exp(),
    'reqd' => "no" },
  { 'name' => "assoc_images",
    'desc' => "{MP4Plugin.assoc_images}",
    'type' => "flag",
    'deft' => "",
    'reqd' => "no" },
  { 'name' => "applet_metadata",
    'desc' => "{MP4Plugin.applet_metadata}",
    'type' => "flag",
    'deft' => "" },
  { 'name' => "metadata_fields",
    'desc' => "{MP4Plugin.metadata_fields}",
    'type' => "string",
    'deft' => "Title,Artist,Genre" },
  { 'name' => "file_rename_method",
    'desc' => "{BasePlugin.file_rename_method}",
    'type' => "enum",
    'deft' => &get_default_file_rename_method(), # by default rename imported files and assoc files using this encoding
    'list' => $BasePlugin::file_rename_method_list,
    'reqd' => "no"
  } ];
4

3 に答える 3

6

Bwmat が言ったように、これはハッシュ参照の配列への参照です。読んだ

$ man perlref

また

$ man perlreftut     # this is a bit more straightforward

リファレンスについてもっと知りたい場合。

ところで、Perl では次のようなことができます。

@array = ( 1, 2 );          # declare an array
$array_reference = \@array; # take the reference to that array
$array_reference->[0] = 2;  # overwrite 1st position of @array

$numbers = [ 3, 4 ];        # this is another valid array ref declaration. Note [ ] instead of ( )

ハッシュでも同じことが起こります。

ところで、Perl では次のようなことができます。

%hash = ( foo => 1, bar => 2 );
$hash_reference = \%hash; 
$hash_reference->{foo} = 2;

$langs = { perl => 'cool', php => 'ugly' }; # this is another valid hash ref declaration. Note { } instead of ( )

そして... はい、これらの参照を逆参照できます。

%{ $hash_reference }

はハッシュとして扱われるため、$langs上記のキーを出力したい場合は、次のようにします。

print $_, "\n" foreach ( keys %{ $langs } );

配列参照を逆参照する@{ }には、代わりに%{ }. 逆参照することもsubできます。

sub foo
{
  print "hello world\n";
}

my %hash = ( call => \&foo );

&{ $hash{call} }; # this allows you to call the sub foo
于 2011-11-17T08:15:07.210 に答える
1

$arguments配列参照(配列への参照/ポインタ)です

で配列を初期化し()、で配列参照を初期化します[]

my @array = ( 1, 2, 3 );
my $array_ref = [ 1, 2, 3 ];

で参照を作成できます\

my $other_array_ref = \@array;

配列参照を使用する場合は、次を使用するときに逆参照します。

for my $element ( @{$array_ref} )

また

print ${$array_ref}[0];

見るman perlref

質問に戻る:$argumentsハッシュ参照の配列への参照です(で初期化されます{}

于 2011-11-17T08:08:29.887 に答える
0

ハッシュ参照のハッシュのように見えます。

のように逆参照する必要があるかもしれません

%newhash = %{$arguments}

データを次のように印刷します

print $newhash{'name'}

于 2011-11-17T08:13:06.857 に答える