10 Einträge, 1 Seite |
1
2
3
4
5
6
my $a = [1, [2, 3], 4];
match ($a) {
case [1, $b, ...]: print $b->[1]; # gibt 3 aus
...
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
sub match { my ($ref, $what) = @_; my $idx = 0; while ($idx<@$ref) { if (ref $what->[$idx] eq "SCALAR") { ${ $what->[$idx] } = $ref->[$idx]; } elsif ( (ref $what->[$idx] eq "ARRAY") or (ref $ref->[$idx] eq "ARRAY")) { match ($ref->[$idx], $what->[$idx]); } $idx++; } } my $a = [1, [2, 3], 4]; my $b; match ($a, [1, \$b, 3]); print $b->[1], $/; match ($a, [1, [2, \$b], 3]); print $b, $/;
1
2
3
4
5
use Data::Dumper;
$a=[1,[2,3],4];
$d=Dumper($a);
$d =~ s/.*=//;
$d =~ /^\s*\[\n(\s*)1,\n((?:.*\n)*?\1[^\s].*?,)/m and print eval ($2)->[1];
10 Einträge, 1 Seite |