I am trying to print the contents of the array from within the hash. I
see that I can do it by
print "$name: $items[0][0] $items[0][1] $items[0][2] $items[0][3] \n "
Is there a better way to accomplish this, especially if I don't know the
number of items in the array.
Here is the code:
while (( my $name, my @items) = each(%all)) {
my $len = @items;
print "this is len=>$len\n";
# print "$name: $items[0][0] $items[0][1] $items[0][2]
$items[0][3] [EMAIL PROTECTED] \n ";
print Dumper(@items);
}
Entire code:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @gilligan = qw(red_shirt hat lucky_socks water_bottle);
my @skipper = qw ( blue_shirt hat preserver sunscreen);
my @professor = qw(sunscreen water_bottle slide_rule batteries
radio);
my %all = (
"Gilligan" => [EMAIL PROTECTED],
"Skipper" => [EMAIL PROTECTED],
"Professor" => [EMAIL PROTECTED],
);
warn Data::Dumper::Dumper (\%all);
check_items_for_all(\%all);
sub check_items_for_all{
my $all = shift;
for my $person(sort keys %$all) {
check_items_required($person, $all->{$person});
} #end for
} #end check_items_for_all
sub check_items_required {
my $who = shift;
my $items = shift;
my @missing = ();
my @required = qw(preserver sunscreen water_bottle
jacket);
for my $item (@required) {
unless (grep $item eq $_, @$items) { #if
statement is false
print "$who is missing $item\n";
push @missing, $item;
} #end unless
} #end for
if (@missing) {
push @$items, @missing;
print "$who now has @$items\n\n";
} #end if
} #end sub
while (( my $name, my @items) = each(%all)) {
my $len = @items;
print "this is len=>$len\n";
# print "$name: $items[0][0] $items[0][1] $items[0][2]
$items[0][3] \n ";
print Dumper(@items); # I want to print the contents of
dumper
}
foreach my $line (@gilligan) {
print "Gilligan: $line\n";
}