#!/usr/bin/perl
use strict;
my @firstlist = qw(1 2 3 4 5);
my @secondlist = qw(A B C D E);
process_list(\@firstlist);
process_list(\@secondlist);
sub process_list {
my($list_ref) = @_;
sub get_list { return @$list_ref; }
print_list();
}
sub print_list {
foreach my $item (get_list()) {
print "LIST ITEM: $item\n";
}
}
####
LIST ITEM: 1
LIST ITEM: 2
LIST ITEM: 3
LIST ITEM: 4
LIST ITEM: 5
LIST ITEM: 1
LIST ITEM: 2
LIST ITEM: 3
LIST ITEM: 4
LIST ITEM: 5
####
#!/usr/bin/perl
use strict;
my @firstlist = qw(1 2 3 4 5);
my @secondlist = qw(A B C D E);
process_list(\@firstlist);
process_list(\@secondlist);
my $get_list_sub;
sub make_list_closure {
my ($ref) = @_;
return sub { return @$ref; };
}
sub process_list {
my($list_ref) = @_;
$get_list_sub = make_list_closure($list_ref);
print_list();
}
sub print_list {
foreach my $item ($get_list_sub->()) {
print "LIST ITEM: $item\n";
}
}