Thread Zahlen in Worten (9 answers)
Opened by bianca at 2012-01-11 15:25

topeg
 2012-01-15 17:50
#155453 #155453
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Code (perl): (dl )
1
2
3
    my $wert=shift;
    return undef if !defined $wert || $wert=~/[^\d]/;
    $wert=~s/^0//g while $wert=~/^0/;

Ich würde das so schreiben:
Code (perl): (dl )
1
2
3
4
5
6
7
    use Scalar::Util;
    my $wert=shift;
    return undef unless(defined($wert));
    return undef unless(Scalar::Util::looks_like_number($wert));
    #$wert=sprintf('%u',$wert);
    $wert=~s/\D.*$//gs;
    $wert=~s/^0+//s;


Aber ich weiß nicht, was du gegen Module hast.
Wollte ich es richtig verwenden würde ich ein Modul mit Exporter schreiben und "zifferzuwort" exportieren. Die Funktion, die du erstellst hast, erzeugt jedes mal den Hash mit den Werten neu, wenn sie aufgerufen wird. Das ist nicht sonderlich effizient. Weiterhin sind die Funktionen _hundert und _zehn um gesamten Scope verfügbar, dass kann unter Umständen zu Problemen führen wenn sie irgendwo redefiniert werden.

Aber ansonsten mach was du für richtig hältst. Der Code steht unter der IMGEL. (Ist Mir Ganz Egal Lizenz). ;-)

EDIT: sprintf kommt mit großen zahlen nicht klar.
Last edited: 2012-01-15 18:06:11 +0100 (CET)

View full thread Zahlen in Worten