Frank Bax wrote: > At 02:11 PM 10/23/05, John W. Krahn wrote: > >> Frank Bax wrote: >> > my $snew = >> > sprintf("%4d%4d",$aSuit{$new}{'rescap'},$aSuit{$new}{'resval'}); >> > my $slow = >> > sprintf("%4d%4d",$aSuit{$low}{'rescap'},$aSuit{$low}{'resval'}); >> >> Using sprintf() to concatenate numbers is (AFAIK) going to be slower than >> concatenation: >> >> my $snew = $aSuit{ $new }{ rescap } . $aSuit{ $new }{ resval }; >> my $slow = $aSuit{ $low }{ rescap } . $aSuit{ $low }{ resval }; >> >> > my $aval=''; map { $aval=$aval.sprintf("%4d",$aSuit{$a}{$_}); } >> @f_seq; >> > my $bval=''; map { $bval=$bval.sprintf("%4d",$aSuit{$b}{$_}); } >> @f_seq; >> >> You shouldn't use map in void context, you should use a foreach loop >> instead, >> but you don't even need a loop there: >> >> my $aval = join '', @{ $aSuit{ $a } }{ @f_seq }; >> my $bval = join '', @{ $aSuit{ $b } }{ @f_seq }; > > > Your suggested code changes don't work when the list of numbers on each > side of comparison have different number of digits - that's why I > initially introduced sprintf - so all numbers would use 4 > digits/characters.
my $format = '%4d' x @f_seq; sprintf( $format, @{ $aSuit{ $a } }{ @f_seq } ) cmp sprintf( $format, @{ $aSuit{ $b } }{ @f_seq } ); John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>