1)url 判断是否合法: /^(http:\/\/|https:\/\/)?((?:[A-Za-z0-9]+-[A-Za-z0-9]+|[A-Za-z0-9]+)\.)+([A-Za-z0-9]+)[\/\?\:]?.*$/
2)什么时候需要转义:1. 比如在"" 里面还要使用",则\"; 2. 一些特殊字符
3)数据库乱码问题:在脚本中查询的表和插入的表都要设置同样的编码如utf8($db_url->do(set names utf8)), 在secureCRT显示时设置UTF-8,查询数据库显示前set names utf8;
4)打log问题:如果log文件没权限写入,那会将log信息输出在标准输出。secureCRT sz/rz 也会遇到目录权限的问题
5)倒数据不要全量重新倒,可以设定时间起始点甚至表自增id,从文件读出写入;当tmmp表为空时,perl
sql执行以下语句返回还是为真,需要再次判断idmax的值是否为""
mysql> select max(id) idmax from tmmp;
+-------+
| idmax |
+-------+
| NULL |
+-------+
6)perl 对类型还是要注意,如$url为字符串,则如果判断 $url == 0 很可能为真
7) perl
的print $log "xxx" ; syswrite $log, "xxxx"; perl中的printf很多字符打印有问题,最好是使用syswrite来打印数据
8) > or >> 如果文件不存在都会创建,只是truncate
or append的区别
9)sql 执行出错,页面出现很多乱码,包括log文件会有显示不了的字符,往往是因为插入的参数包含乱码,导致某些引号提早并上而执行出错,有种解决办法是只取参数的有些长度字段。
10)当log文件太大时,往往vim打开会显示为new file, 可以tail/head -n num file | more 来查看部分内容
11)$db->quote($url) 这样在插入sql时不用再对$url 加‘ ‘, 如果$url 内还有单引号会被转义; sql 执行出错很可能是引号提前闭合的问题
12) mysql> pager less
多页显示
13) select substring_index(‘xxx.xxx.xx.22‘, ‘.‘, -1) // 得到22
14) perl中的散列赋值都是引用拷贝而非值拷贝
15) perl打印shell脚本的结果信息之前需要先chomp结果,否则打印出来的信息不对
16) 取出url的后缀,如html, php等
if ($url =~ /^(http:\/\/ | https:\/\/).*\/.*\.([^\/\.\?]+)/)
{
my $suffix = $2;
}
17) 从url中取出域名
my @tmp = split(/:/, $url); my @tmp2= split(/\//, $tmp[1]); my $domain = $tmp2[2];