http://qs321.pair.com?node_id=425267

szabgab has asked for the wisdom of the Perl Monks concerning the following question:

I am still in maintenance mode. Here is a piece of code.
@matrices = qw(user_group user_realm group_realm realm_template template_subsite realm_subsite);
and later in the code
sub IsMatrix { shift if UNIVERSAL::isa($_[0], __PACKAGE__); my ($child, $parent) = @_; my $cache = undef if undef; + + unless ($cache) { my %cache; @cache{@matrices} = (1) x scalar(@matrices); $cache = \%cache; } + return $cache->{"${child}_$parent"}; }
OK, so the first line lets me use this either as function or as a method.

What does this my $cache = undef if undef; do ?

Update
Just thinking aloud as the comments are coming in. Maybe I can replace the whole sub with the following:

grep /^${child}_$parent$/, @matrices;