perl.beginners
[Top] [All Lists]

Please help me w/ my sub

Subject: Please help me w/ my sub
From: Richard Lee
Date: Tue, 14 Oct 2008 02:15:17 -0400
Newsgroups: perl.beginners


below sub works fine except the line where key is default.
Instead of printing out PCMU only once, it's printing it out 40 times randomly..
Trying to figure out what I did wrong.

Please leave me a feedback.

thank you.

156  time(s) Codec(s)  : unassigned_38
185 time(s) Codec(s) : G729 1966 time(s) Codec(s) : PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU PCMU

sub codec_list {
#my @codec_d = qw/0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
     #                 28 29 30 31 32 33 34 35--71 72--76 77--95 96--127/;
my @codec_d = qw/0 default 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
                      28 29 30 31 32 33 34 A B C D/;
my @codec_i = qw/PCMU PCMU Reserved Reserved GSM G723 DVI4 DVI4 LPC PCMA G722 L16 L16 QCELP CN MAP G728 DVI4 DVI4 G729 reserved unassigned unassigned unassigned unassigned unassigned CelB JPEG unassigned nv unassigned unassigned H261 MPV MP2T H263
                      unassigned reserved unassigned dynamic/;
     my %codec_r;
     my @return_codec;
     @codec_r{@codec_d} = (@codec_i);
     my $number = shift;
     HS: for ( @$number ) {
           my $request_key = $_;
           #next unless $request_key =~ /^\d+$/;
           for my $o ( keys  %codec_r ) {
if ( $request_key eq $o ) { push @return_codec, $codec_r{$o};
              } elsif ( $request_key eq 'default' ) {
push @return_codec, $codec_r{'default'}; <--- problem line
              } elsif ( ($o =~ /A|B|C|D/ ) ) {
if ( ( $request_key >= 35 ) and ( $request_key <= 71 )) { push @return_codec, join ('_' , $codec_r{'A'}, $request_key );
                         next HS;
} elsif ( ( $request_key >= '72' ) and ( $request_key <= '76' )) {
                         push @return_codec, $codec_r{'B'};
                         next HS;
} elsif ( ( $request_key >= '77' ) and ( $request_key <= '95' )) {
                         push @return_codec, $codec_r{'C'};
                         next HS;
} elsif ( ( $request_key >= '96' ) and ( $request_key <= '126' )) {
                         push @return_codec, $codec_r{'D'};
                         next HS;
} } } }
     return @return_codec;
}

<Prev in Thread] Current Thread [Next in Thread>