#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my @data = ( qw/ 2 3 3 3 5 7 8 12 32 44 55 12 3 23 43 33 1 4 25 43 42 1 4 5 3 3 3 /);
my $mode = mode( { NUMBERS => \@data } );
sub mode {
my %opt = %{ shift @_ };
print Dumper \%opt;
}
__END__
####
$VAR1 = {
'NUMBERS' => [
'2',
'3',
'3',
'3',
'5',
'7',
'8',
'12',
'32',
'44',
'55',
'12',
'3',
'23',
'43',
'33',
'1',
'4',
'25',
'43',
'42',
'1',
'4',
'5',
'3',
'3',
'3'
]
};
####
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my @data = ( qw/ 2 3 3 3 5 7 8 12 32 44 55 12 3 23 43 33 1 4 25 43 42 1 4 5 3 3 3 /);
my $mode = mode( { NUMBERS => \@data } );
sub mode {
my %opt = %{ shift @_ };
while (my ($key, $val) = each %opt) {
print "k:$key v:$val\n";
}
}
__END__
####
k:NUMBERS v:ARRAY(0x7fef9a82a168)
####
my @i_numbers = $opt{NUMBERS};
####
my $i_numbers = $opt{NUMBERS}; # $i_numbers is an arrayref
# or
my @i_numbers = @{ $opt{NUMBERS} }; # dereference the arrayref as you get it from the hash
####
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my @data = ( qw/ 2 3 3 3 5 7 8 12 32 44 55 12 3 23 43 33 1 4 25 43 42 1 4 5 3 3 3 /);
my $mode = mode( { 'NUMBERS' => \@data } ); # I quote hash keys so I don't
# mistake them for constants
# and use them as barewords.
print "Mode : $mode\n";
sub mode {
my %count = ();
my %opt = %{ shift @_ };
for ( @{ $opt{'NUMBERS'} } ) { # no need to sort the array here
$count{ $_ }++;
}
my @key = sort{ $count{$b} <=> $count{$a} } keys %count;
return $key[0];
}
__END__