Stevan Little writes:
> my $a = 'a';
> my $b = '';
> my $c = '';
> 
> my $any_of_them = $b | $c | $a;
> # this test passes
> ok('a' eq $any_of_them, '($b | $c | $a) matches at least one "a"');
> 
> $b = 'b';
> $c = 'c';
> 
> # this test passes ...
> ok('a' eq $any_of_them, '($b | $c | $a) matches at least one "a"');
> # but these two tests don't
> ok('b' eq $any_of_them, '($a | $b | $c) matches at least one "b"');
> ok('c' eq $any_of_them, '($c | $a | $b) matches at least one "c"');          

That behavior is correct.  Just as if you said:

    my $a = 'a';
    my $b = $a;
    $a = 'b';
    say $b;   # a

This should work, however:

    my $a = 'a';
    my $b = '';
    my $c = '';

    my $any_of_them = \$a | \$b | \$c;

    $b = 'b';
    $c = 'c';

    ok('b' eq $$any_of_them);  # passes

That second $ might not need to be there.  I don't understand exactly
how transparent references are yet.

Luke

Reply via email to