1

perl初心者です。ハッシュ配列の値から grep しようとしています。試してみると、初期化されていない値のエラーが発生する理由を誰かが説明できますか

#!/usr/bin/perl
use strict;
use warnings;

my %families = (Flintstone => [ qw(Pebbles)                    ],
            Simpson    => [ qw(Bart Lisa Maggie)           ],
            Keaton     => [ qw(Alex Mallory Jennifer Andy) ]);
my $user = 'Mary';
foreach my $name (keys %families)
{
    print "$name has @{$families{$name}} \n";

    if (grep /$user/,@{families{$name}})
    {
    print "User $user found \n"
    }
    else
    {
    print "User $user not found";
    }
}

更新: ありがとうございます。$name を修正しました。ただし、grepはうまくいかないようです。つまり、$user を Bart に変更しても、User Bart が見つかりません。

4

2 に答える 2

2

もしかして

@{$families{$name}}

それ以外の

@{families{name}}

多分?

于 2013-02-26T20:29:50.463 に答える
1

13行目ではエラーが発生しますが、11行目ではエラーが発生しません。不足している$は重要かもしれません。

于 2013-02-26T20:31:09.213 に答える