0

私はグローバルハッシュを持っています

our %employee = (
    'ename'=>"rahul",
    'eno'=>"25",
);

後で、異なる値を持つサブルーチンで使用したい

sub emp
{
    print ("$employee->'ename' = 'satish'");
}

しかし、これは起こっていません。ここで何が間違っているのか教えてください..?

4

2 に答える 2

1

別のハッシュ値を変更するのと同じように。

次のようなパッケージがあるとします。

package TestPack;

use warnings;
use strict;

our %employee = (
    ename => 'rahul',
    eno   => 25,
);

hash次のように変更できます。

#!/usr/bin/perl

use warnings;
use strict;

use TestPack;

print "name: $TestPack::employee{'ename'}\n";

$TestPack::employee{'ename'} = "Chris";
print "name: $TestPack::employee{'ename'}\n";

出力:

$ ./test.pl 
name: rahul
name: Chris

多くの人が参加する大規模なプロジェクトで作業する場合、データを直接処理するのはおそらく最善ではありませんが、代わりに「アクセサ/ミューテータ」のようなものを に含めることができますTestPack:

sub get_value {
    my $val = shift;

    if( exists($employee{$val}) ) {
        return $employee{$val};
    } else {
        return "No such value: $val";
    }
}

sub update_ename {
    my $ename = shift;

    $employee{'ename'} = $ename;
}

他のモジュール/スクリプトは、次のようなものを追加できます。

my $new_new_ename = "Mike";

TestPack::update_ename($new_new_ename);
print "name: ", TestPack::get_value('ename'), "\n";
print "name: ", TestPack::get_value('foobar'), "\n";

出力:

name: Mike
name: No such value: foobar
于 2013-06-13T06:09:19.693 に答える