URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3288
[ Назад ]

Исходное сообщение
"from_unixtime -> reverse"

Отправлено EHoT , 17-Авг-04 08:55 
очень хочется узнать 8)
многие сталкивались, теперь я..
squid - > access.log -> дата -> mysql

в шел скрипте
awk '{print "INSERT INTO test (ip,bytes,link,trans,time)VALUES(\""$3"\","$5",\""$7"\",\""$9"\",from_unixtime("$1"));"};'
< /usr/local/squid/logs/squidforparse1.log | mysql -D traffic -u root --password=password

а как сделать тоже самое в перловке?
функция from_unixtime там отсутствует, есть localtime...
но как преобразовать = хоть убей
поможите люди добрые 8)


Содержание

Сообщения в этом обсуждении
"from_unixtime -> reverse"
Отправлено ihor , 17-Авг-04 10:17 
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($yourtime);

"from_unixtime -> reverse"
Отправлено EHoT , 20-Авг-04 09:40 
система фрибсд 5.2 эта команда в скрипте выполняетцца как
($hour, $min, $sec, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(1091433560.730);
print "$hour:";
print "$min:";
print "$sec\n";
print "$mday-";
print "$mon-";
print "$year\n";
#print "$wday:";
#print "$yday:";
#print $isdst;

имеем:
Name "main::isdst" used only once: possible typo at ./file.sh line 47.
Name "main::yday" used only once: possible typo at ./file.sh line 47.
Name "main::wday" used only once: possible typo at ./file.sh line 47.
20:59:11
2-7-104

как добиться чтобы те переменные которые мне не нужны не отображались но скрипт не ругался? и почему год 104 а не 2004?


"from_unixtime -> reverse"
Отправлено ihor , 20-Авг-04 10:11 
>система фрибсд 5.2 эта команда в скрипте выполняетцца как
>($hour, $min, $sec, $mday, $mon, $year, $wday, $yday, $isdst) =
странно, у меня что в Windows, что во FreeBSD 4.8 (Perl 5.8.0)
порядок такой, как я написал (и в хелпе это так описывается).

чтобы не брать лишних переменных, просто не указывай их в скобках.
т.е. будет:
($hour, $min, $sec, $mday, $mon, $year) = ...
если тебе не нужны переменные из середины списка, поставь вместо переменных undef:
($hour, $min, undef, undef, $mon, $year) = ...

вместо указания отдельных переменных можно результат записать в массив и взять из него только нужные элементы:
@fields = localtime(time);
$sec = $fields[0]; # в "моей" нотации
...

вообще-то месяц возвращается в диапазоне 0..11, год - как кол.-во лет с 1990, т.е. чтобы получить реальный год, нужно: $year += 1900;
день недели - 0..6, день года - 0..364 (0..365).

вообще посмотри
man perlfunc
для localtime.