Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: Loosing Negative Values in Array Ref

by Anonymous Monk
on Jun 03, 2009 at 13:57 UTC ( [id://768018]=note: print w/replies, xml ) Need Help??


in reply to Re: Loosing Negative Values in Array Ref
in thread Loosing Negative Values in Array Ref

By that point in the code, there are no negatives anyway (see Re: Loosing Negative Values in Array Ref).
  • Comment on Re^2: Loosing Negative Values in Array Ref

Replies are listed 'Best First'.
Re^3: Loosing Negative Values in Array Ref
by Thelonius (Priest) on Jun 03, 2009 at 14:32 UTC
    By that point in the code, there are no negatives anyway
    No.

    Here, I think this is what you want:

    for my $aref_acc_num (sort { $a->[0] cmp $b->[0] } values %$acc_num) { push @$all_dta_acc_num, my $tmp = []; for my $aref (@$aref_acc_num) { for my $i (0..1) { $tmp->[$i] = $aref->[$i]; } for my $i (2..$#$aref) { if (!defined($tmp->[$i])) { $tmp->[$i] = $aref->[$i]; } elsif ($tmp->[$i]=~m/^[+-]?\d+$/) { #numeric $tmp->[$i] = $aref->[$i] if $aref->[$i] > $tmp->[$i]; } else { $tmp->[$i] = $aref->[$i] if $aref->[$i] gt $tmp->[$i]; } } } }
      This is very close, see the values for "Zilda Mil", it should display "14.0" but instead its getting the "9.0".
        This is very close, see the values for "Zilda Mil", it should display "14.0" but instead its getting the "9.0".
        Hmmm, yes, this is because it's using 'gt' rather than '<'. I copied the regex from your program. The best solution (if you're on Perl 5.8 or later) is to use looks_like_number:
        use Scalar::Util 'looks_like_number'; for my $aref_acc_num (sort { $a->[0] cmp $b->[0] } values %$acc_num) { push @$all_dta_acc_num, my $tmp = []; for my $aref (@$aref_acc_num) { for my $i (0..1) { $tmp->[$i] = $aref->[$i]; } for my $i (2..$#$aref) { if (!defined($tmp->[$i])) { $tmp->[$i] = $aref->[$i]; } elsif (looks_like_number($tmp->[$i])) { $tmp->[$i] = $aref->[$i] if $aref->[$i] > $tmp->[$i]; } else { $tmp->[$i] = $aref->[$i] if $aref->[$i] gt $tmp->[$i]; } } } }
        If you're on an earlier Perl, see perlfaq4.
Re^3: Loosing Negative Values in Array Ref
by Anonymous Monk on Jun 03, 2009 at 14:26 UTC
    But how could I print my results and get for this particular element as an example this result:
    [ 'Auser Ferro', '987778999', '2008-11-30', 'W', '888', '0', '0', '0', '1', '2', '4', '0', '-5.00', '0', '0', '0', '0', '0', '0', '2.0', '2008', '1112399' ],

    Notice the "-5.00". Thats what I am looking for.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://768018]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (9)
As of 2024-04-18 11:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found