Forum Webscript.Ru
Программирование => Perl => Тема начата: Yaroslav от 12 Июля 2006, 17:10:54
-
если надо постаить ноль перед датой, то это решается так:
(undef,undef,undef,$mday,$mon,$year,undef) = localtime(time);
if ($mday < 10) { $mday="0$mday"; }
if ($mon < 10) { $mon="0$mon"; }
$data="$mday.$mon.$year";
но вот у меня чуть подругому, юзер сам должен стаить дату, а я ноль никак не могу всавить перед ним:
$stdey=$VOTE{stdey}; if ($stday < 10) { $stday="0$stday"; }
print "$stdey
"; #вот не хочет он 01 выдавать....
-
perldoc -f printf
-
да и $stdey != $stday
-
sprintf - читаю
$stdey != $stday - это почему?
-
printf, sprintf - прочитал, ничего не понял, пример можно?
-
Yaroslav
sprintf("%02d", 1);
-
$stdey=$VOTE{stdey}; if ($stday < 10) { $stday="0$stday"; }
присваеваете $stdey, фиговину творите с $stday.
-
length($mday)<2?"0$mday":$mday;
-
# perl -MBenchmark=timethese -e \'$a = 1; timethese ($ARGV[0],{"A" => sub { return sprintf "%02d",$a; },"B" => sub { return length($a) < 2 ? "0$a" : $a; }})\' 100000000
Benchmark: timing 100000000 iterations of A, B...
A: 26 wallclock secs (38.18 usr + 0.01 sys = 38.19 CPU) @ 2618486.51/s (n=100000000)
B: 49 wallclock secs (47.31 usr + 0.02 sys = 47.33 CPU) @ 2112824.85/s (n=100000000)
#
-
arto
perl -MBenchmark=timethese -e \'$a = 1; timethese ($ARGV[0],{"A" => sub { return sprintf "%02d",$a; },"B" => sub { return $a < 10 ? "0$a" : $a; }})\' 10000000
Benchmark: timing 10000000 iterations of A, B...
A: 24 wallclock secs (19.95 usr + 0.00 sys = 19.95 CPU) @ 501174.63/s (n=10000000)
B: 10 wallclock secs (11.45 usr + 0.00 sys = 11.45 CPU) @ 873720.14/s (n=10000000)