2

そこに 1 つのハッシュがあり、2 つのキーがあります。1 つのキーを別のキーの値として使用したいと考えています。Perlでは可能ですか?

式:

%hash= (
        abs =>[a,b,c,e];
        xyz=> abs
      );

私は試しましたが、これを行うことができませんでした。

4

5 に答える 5

2

間違った構文を使用しているだけです。代わりにこれを試してください:

#!/usr/bin/env perl

# warnings and strict are ALWAYS a good idea in perl code
use warnings;
use strict;

my %hash = ( 
        abs => ['a', 'b','c','e'], # make strings clear and use a comma, no semicolon
        xyz => 'abs'
);

そして、ハッシュを印刷したい場合は、それを確認するだけでData::Dumper便利です-特に大きなハッシュがある場合:

use Data::Dumper;
print Dumper(\%hash);
于 2013-05-28T15:22:00.727 に答える
1

1 つの問題は、ハッシュが定義されている間は匿名であることです。リスト全体が解析されるまでは割り当てられ%hashないため、定義中にハッシュの以前の部分を参照する方法は実際にはありません。利用可能な回避策がいくつかあります。

my $common_lref = ['a', 'b', 'c', 'e'];
my %hash = ( abs => $common_lref, xyz => $common_lref );

また

my %hash = ( abs => ['a', 'b', 'c', 'e'] );
$hash{xyz} = $hash{abs};

$hash{abs}どちらの場合も、 changesによって参照される配列を変更する$hash{xyz}と、その逆も同様です。

注: これは、値が (ここにあるように) 参照である場合にのみ機能し、$hash{abs}またはを変更しない限りのみ機能します$hash{xyz}$hash{abs}andによって参照される配列の要素は引き続き変更できます$hash{xyz}(要素の追加と削除を含む)。

于 2013-05-28T15:29:33.087 に答える