On Aug 22, 5:44 am, [EMAIL PROTECTED] (Chris) wrote:
> I am working a script that is a solution to a problem in Intermediate
> Perl.  Here is the script:
>
> #!/usr/bin/perl -w
> use strict;
>
> sub check_items_for_all {
>         my $all_ref = @_;
>         my @who = keys %$all_ref;
>
>         my @required  = qw(preserver sunscreen water_bottle jacket);
>         my @missing = ( );
>
>         for my $crew (@who){
>                 for my $item(@required){
>                         unless (grep $item eq $_, %$all_ref{$crew}) {
>                                 print "$crew is missing $item.\n";
>                                 #push @missing, $item;
>                         }
>                 }
>         }
>
>         #if (@missing) {
>         #       print "Adding @missing to @$items for $who.\n";
>         #       push @$items, @missing;
>         #}
>
> }

You've declared @missing in the wrong scope. It should be inside the
$crew loop.

And unless it is important that the elements of @missing have the same
order as those in @required then you'd be better off doing this with a
hash.

         for my $crew (@who) {
                 my $items = $all_ref->{$crew};
                 my %missing;
                 @[EMAIL PROTECTED] = ();
                 delete @[EMAIL PROTECTED];
                 # Do stuff with keys %missing


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to