Perlのサブルーチンからエイリアスを返すことは可能ですか?
簡単な例があります:
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
{
package Test;
my $value = 'old';
sub get_value {
return \$value;
}
sub set_value {
my ($x) = @_;
$value = $x;
}
}
my $test = Test::get_value();
say $$test;
Test::set_value('new');
say $$test;
これは本質的に私が望む機能ですが、逆参照せずにデータにアクセスできるように作成$test
してエイリアスする方法を見つけたいと思います。$value
これは可能ですか?
これが私が望む構文の例です:
ex (疑似コード):
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
{
package Test;
my $value = 'old';
sub get_value {
# return alias to $value
}
sub set_value {
my ($x) = @_;
$value = $x;
}
}
# Gets an alias, NOT a reference
my $test = Test::get_value();
# Print old
say $test;
Test::set_value('new');
# Print new
say $test;
エイリアスについて読んでいて、すべてが「型グロブ」を指し続けています...しかし、型グロブを使用するにはグローバル変数を使用する必要があるようで、それを避けたいと思います。
また、CPAN から追加のモジュールをインストールする必要のないソリューションが必要です。セキュリティによって承認されてインストールされる必要があるためです...そして、私のスクリプトを使用したい他の人も同様です。