標籤:perl sql dbconnect split url
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];
Perl 工作積累(不定期更新)