Leser: 21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
my $num; my $cnt = 0; for (reverse(0 .. length($num_data))) { if ($cnt == 3) { $num .= (substr($num_data, $_, 1) . '|'); $cnt = 0; } else { $num .= substr($num_data, $_, 1) }; $cnt++; } my @num_data = split /\|/, $num; $num_data = join '.', reverse @num_data;
2010-03-04T15:51:25 sid burn
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
#!/usr/bin/perl
use strict;
use warnings;
my @numbers = qw(
1
10
100
1000
10000
100000
1000000
10000000
100000000
1000000000
);
# Test
print "Number: " . form_num($_, '.' ) . "\n" for @numbers;
print "----US\n";
print "Number: " . form_num($_, ',' ) . "\n" for @numbers;
sub form_num {
my $num = reverse(shift);
my $sep = shift;
$num =~ s/(\d{3})(?=(?:\d{1,3}))/$1$sep/g;
reverse($num);
}
2010-03-05T11:03:26 biancaKlar, ohne Nachkommastellen geht meine Lösung auch kürzer und schneller. Du hast - glaub ich - unter dem falschen Beitrag geantwortet :)
2010-03-05T11:20:14 EscapeDeine Lösung habe ich weder verwendet noch modifiziert.
2010-03-05T11:26:52 bianca2010-03-05T11:20:14 EscapeDeine Lösung habe ich weder verwendet noch modifiziert.
Verblüffende Ähnlichkeit im Code und identische Funktionsweise. Hmmm, interessant, Deine Aussage.
Guest EscapeNa dann erkläre bitte einmal was Deine Regex macht und was meine Regex macht.
Bin gespannt :-)
2010-03-05T11:48:50 biancaBeide Regex fügen nach einem Dreierblock von Ziffern ein Zeichen ein. Bei mir ein Komma und bei Dir $sep
QuoteSo gehts einfacher und schneller
2010-03-05T14:29:57 sid burnWas ist daran kompliziert?QuoteSo gehts einfacher und schneller
Du meinst wohl eher komplizierter und langsamer.
2010-03-05T14:29:57 sid burnWarum ist es schneller seine komplett eigene Funktion zu schreiben, anstatt auf eine Funktionierende Lösung zurückzugreifen die man nicht mehr entwickeln muss?
2010-03-05T14:29:57 sid burna) Weil ich gern denke :-)Und warum ist es einfacher das Rad neu zu erfinden, und erstmal nachzudenken wie eine Lösung ausschaut als bereits eine vorhandene, getestete fertig geschriebene Lösung zu nutzen?
2010-03-05T16:41:51 EscapeWas ist daran kompliziert?
Wieso meinst Du dass es langsamer als das Modul ist? Mit 'schneller' war die Ausführungszeit gemeint - nicht die Entwicklung.
QuoteDas Modul als solches benötigt zusätzliche Ladezeit,
Quotemehr Speicher als mein Code,
Quotemehr Ausführungszeit und ist,
Quotewas die verschiedenen perl Versionen anbelangt, nicht abwärtskompatibel.
Quotea) Weil ich gern denke :-)
Quoteb) aus den w.o.g. Gründen
2010-03-07T10:14:43 Escape@sid
Welche Art von Denken har Dich zu der Erkenntnis gelangen lassen, dass mein Code nicht Bestandteil eines entsprechenden Moduls ist?
2010-03-08T09:03:08 sid burnDie des Guru Denkens.
Oder welche Art des Denken bewegt dich dazu das dies irgendetwas am gesagten ändert?
1) Wenn du Copy&Paste betreibst und dein Code aus einem Modul kopierst hast, hast du keinen der genannten Vorteile und das Prinzip nicht verstanden.
2) Wenn du ein eigenes Modul angefangen hast, hast du ebenfalls keinen der oben genannten Vorteile und ebenfalls nicht das Prinzip verstanden.
Ab und zu driftet halt schonmal ein Schüler zur Dunklen Seite ab.
QuoteIch würde Dir ja gern den Titel 'Perlmeister' zusprechen ...
aber den hat leider bereits Mike Schilli inne :-))
2010-03-08T10:39:47 sid burnAch, ich bin nicht so eitel, mir würde auch schon "Perlgott" reichen.
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl -w use strict; use warnings; sub format { local $_ = reverse sprintf "%.*f",2,shift; # 2=Anzahl Nachkommastellen s/(\d{3})(?=\d)(?!\d*\.)/$1,/g; tr/.,/,./; return scalar reverse; } print ":".&format(300000000)."\n";