修改squid日志中 timestamp

修改squid日志中 timestamp

1194678450.634    545 125.120.144.85 TCP_MISS/200 8879 GET http://bbs.chinaunix.net/thread-1013605-1-1.html - FIRST_UP_PARENT/bbs.chinaunix.net text/html

修改log中时间戳。

#!/usr/bin/perl
use strict;

open (LOG,"<usr/local/squid/var/logs/access.log");
$^I=".bak";
while (<LOG>) {
s/^\d+\.\d+/localtime ($&)/;
print;
}

但access.log内容并没有显示正常时间,而且没有出现access.log.bak文件。不解!同时对句柄这感觉不太熟悉。
请各位指教。

s/......./localtime($&)/e;

想到小骆驼中的例子。。。

#!/usr/bin/perl
use strict;

$^I=".bak";
while (<>) {
s/^\d+\.\d+/localtime ($&)/;
print;
}

虽然有了备份文件,但时间戳并没有被修改,而成了如下格式:
localtime (1194680953.295)   2434 125.120.144.85 TCP_MISS/200 10273 GET http://bbs.chinaunix.net/viewthread.php? - FIRST_UP_PARENT/bbs.chinaunix.net text/html

s/^\d+\.\d+/localtime ($&)/;
这个正则表达式哪里有问题呢?
我没有看出来,请各位指出。


QUOTE:
原帖由 Lonki 于 2007-11-10 15:59 发表
s/......./localtime($&)/e;

/e
小弟不解,请问楼主,具体是什么意思?
e        Evaluate the right side as an expression.
谢谢!
已经成功!
同时修改crontab,
* */1 * * * /usr/local/squid/sbin/squid-log /usr/local/squid/var/logs/access.log
就可以明了时间了。

但是,请问能否用句柄的方式来实现呢?如何来做呢?
句柄? open FILEHANDLE..... ?
是的。
我头脑中的第一个想法就是这个,不知道能否实现。

偶是菜鸟。。。。
open不能很好的编辑源文件

用Tie::File