Schrift
[thread]12780[/thread]

List::MoreUtils - minmax nimmt undef als min Wert

Leser: 1


<< >> 9 Einträge, 1 Seite
roooot
 2008-11-19 03:01
#116382 #116382
User since
2008-03-03
276 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich benutze minmax aus List::MoreUtils um den kleinsten und größten Wer aus einem Array zu bestimmt. Das Doofe daran ist in dem Array sind einige undef Werte - mit Absicht! - und minmax nimmt die nun als minimum. Maximum funktioniert soweit.
Wie kann ich nun also verhindern, dass minmax einen undef Wert als kleinsten Wert annimmt?
Viele Grüße :)
LanX-
 2008-11-19 03:55
#116383 #116383
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
Indem du undefs per grep vorher ausfilterst?

Nebenbei gesagt: hättest du das Modul verlinkt hätte ich vielleicht für dich in die Doku geschaut.
Linuxer
 2008-11-19 11:10
#116389 #116389
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
http://search.cpan.org/~vparseval/List-MoreUtils-0...

Bitte sehr ;o)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
pq
 2008-11-19 11:51
#116392 #116392
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Linuxer+2008-11-19 10:10:05--
http://search.cpan.org/~vparseval/List-MoreUtils-0...

dieser link wird bei release der nächsten version evtl. schon nicht mehr funktionieren.
wir haben hier die praktischen cpan- oder dist-Tags:
CPAN:List::MoreUtils - CPAN-Suche
CPAN:List::MoreUtils - CPAN-Distribution
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
murphy
 2008-11-19 19:06
#116416 #116416
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
roooot+2008-11-19 02:01:56--
[...] Das Doofe daran ist in dem Array sind einige undef Werte - mit Absicht! - und minmax nimmt die nun als minimum. [...]


Am Rande bemerkt: Das könnte daran liegen, dass undef in numerischem Kontext wie 0 behandelt wird, wenngleich gegebenenfalls mit einer Warnung.
When C++ is your hammer, every problem looks like your thumb.
Gast Gast
 2008-11-20 13:33
#116438 #116438
murphy:
Es koennte nicht nur daran liegen, sondern es liegt daran. Wenn man in den source von MoreUtils.pm schaut, sieht man das einfach mit den groesser als und kleiner als operatoren verglichen wird.
GwenDragon
 2008-11-20 14:07
#116442 #116442
User since
2005-01-17
14749 Artikel
Admin1
[Homepage]
user image
Undefinierte Werte (undef) können nicht verglichen werden.
Und undef ist programmlogisch eher nicht als 0 anzusehen sondern m. E. entweder als Fehlerwert oder Variable unbesetzt.
Dass Perl in manchem Zusammenhang undef dann als 0 konvertiert ist zwar praktisch aber du solltest dich nicht darauf verlassen, dass es immer so bleibt.

Wie LanX- schreibt solltest du die undefs per grep "aussortieren". Du bestimmst nämlich, welche Werte gültig sind und sein müssen!
roooot
 2008-11-20 20:53
#116457 #116457
User since
2008-03-03
276 Artikel
BenutzerIn
[default_avatar]
ok tuts

Code (perl): (dl )
my @values_wo_undef = grep {defined $_} @values
Viele Grüße :)
betterworld
 2008-11-21 16:20
#116490 #116490
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
GwenDragon+2008-11-20 13:07:03--
Dass Perl in manchem Zusammenhang undef dann als 0 konvertiert ist zwar praktisch aber du solltest dich nicht darauf verlassen, dass es immer so bleibt.

Ich bin mir eigentlich ziemlich sicher, dass das immer so bleibt und auch gut dokumentiert ist. Auch wenn ich gerade zu faul zum Nachsehen bin.
<< >> 9 Einträge, 1 Seite



View all threads created 2008-11-19 03:01.