{
my
%book
;
sub
add_book {
my
(
$class
,
$title
,
$arg_ref
) =
@_
;
$book
{
$title
} = {
Title
=>
$title
,
Publisher
=>
q{O'Reilly}
, %{
$arg_ref
} };
}
sub
titles :CUMULATIVE {
return
map
{
"$_ (O'Reilly)"
}
keys
%book
;
}
sub
AUTOLOAD {
use
vars
qw( $AUTOLOAD )
;
my
(
$book_title_keyword
) =
$AUTOLOAD
=~ m/ .* :: (.*) /xms;
if
(
my
@matches
=
grep
{ /
$book_title_keyword
/ixms }
keys
%book
) {
return
@book
{
@matches
};
}
return
;
}
}
{
my
%book
;
sub
add_book {
my
(
$class
,
$title
,
$arg_ref
) =
@_
;
$book
{
$title
} = {
Title
=>
$title
,
Publisher
=>
q{Manning}
, %{
$arg_ref
} };
}
sub
titles :CUMULATIVE {
return
map
{
"$_ (Manning)"
}
keys
%book
;
}
sub
AUTOLOAD {
use
vars
qw( $AUTOLOAD )
;
my
(
$book_title_keyword
) =
$AUTOLOAD
=~ m/ .* :: (.*) /xms;
if
(
my
@matches
=
grep
{ /
$book_title_keyword
/ixms }
keys
%book
) {
return
@book
{
@matches
};
}
return
;
}
}
Library::OReilly->add_book(
'Programming Perl'
=> {
ISBN
=>596000278,
year
=>2000 }
);
Library::Manning->add_book(
'Object Oriented Perl'
=> {
ISBN
=>1884777791,
year
=>2000 }
);
print
"\n-----------------\n"
;
print
Dumper( Library->Perl() );
print
"\n-----------------\n"
;