私はグローバルハッシュを持っています
our %employee = (
'ename'=>"rahul",
'eno'=>"25",
);
後で、異なる値を持つサブルーチンで使用したい
sub emp
{
print ("$employee->'ename' = 'satish'");
}
しかし、これは起こっていません。ここで何が間違っているのか教えてください..?
私はグローバルハッシュを持っています
our %employee = (
'ename'=>"rahul",
'eno'=>"25",
);
後で、異なる値を持つサブルーチンで使用したい
sub emp
{
print ("$employee->'ename' = 'satish'");
}
しかし、これは起こっていません。ここで何が間違っているのか教えてください..?
別のハッシュ値を変更するのと同じように。
次のようなパッケージがあるとします。
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