LINUX.ORG.RU

Perl tie variables assignment

 


0

1

Как сделать присваивание связанной переменной не по значению, а чтобы другая переменная тоже была связанная.
Иными словами:

use strict;
package Rand;

sub TIESCALAR { bless \my $self, shift }
sub FETCH { return rand(100) % 100}

package main;
my $var;
tie $var, "Rand";

my $g = $var;
print "$g\n";
print "$g\n";
print "$g\n";



чтобы каждый раз печаталось разное значение.

Спасибо.


А зачем это? Не проще ли функцию просто вызывать?

anonymous
()

Ссылку сделай

my $g = \$var;
printf "%s\n", $$g;
router ★★★★★
()

как вариант

use strict;
package Rand;

sub TIESCALAR { bless \my $self, shift }
sub FETCH { return rand(100) % 100}

package main;

our $var;
tie $var, "Rand";

our $g;
*g = *var{SCALAR};
print "$g\n";
print "$g\n";
print "$g\n";
pru-mike ★★
()

Спасибо всем за ваши ответы.
Но мне нужно иметь данный функционал именно при конкретном синтаксисе $g = $var;
чтобы $g был tie.
это менять нельзя. можно менять только класс Rand. может перегрузка оператора= поможет?

kasha
() автор топика
Ответ на: комментарий от kasha

Может так понравится?

use strict;

package Rand;

use overload '""' => sub { return rand(100) % 100 }, fallback => 1;
sub new { bless \my $x, shift }

package main;

my $var = new Rand;

my $g = $var;

print "$g\n";
print "$g\n";
print "$g\n";
Olegymous ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.