Perl 陣列排序

Perl 要對陣列進行排序, 可以用內建函式 sort 來做, 例如:以上第 7 行用了 sort 對 @words 進行排序, 輸出結果會是: abc def mmm xyz 但這個 sort 函式是用字串排序的,如果陣列的值是數值,sort 也會根據字串的方式排序,即 123 會排在 23 前面,因為 “1” 是排在 “2” 前面,這樣是做不到排序數值的。這時對數值進行排序可以透過 實現, …

Perl DBI 防止 SQL Injection

現在很多地方都用上資料庫系統, 有一些是檢查用戶名稱及密碼的登入系統, 但如果沒有對用戶輸入進行過濾, 會有很多潛在危除, 例如以下程式碼:my $sth = $dbh->prepare(“select * from user where user=’$user’ and pass=’$pass'”);以上這句 SQL 會檢索 user 資料表, 找出 user 及 pass 與用戶輸入匹配的紀錄, 有回傳便可以登入, 沒有回傳便登入失敗, 這個很容易理解。但如果用戶的輸入包括了一些特定的 sql 指令, 那便有問題了, …

解決 PuTTY 中文亂碼問題

如果用 PuTTY 連接伺服器後出現中文亂碼情況, 可以試試將 PuTTY 的編碼改為 UTF-8:開啟 PuTTY 後, 在左邊的選單按 “Translation”, 會有一個 “Remote character set:”, 預設是:Use font encoding將這個改成 UTF-8 問題應可以解決了.

Perl 複製/重新命名/刪除檔案

在 Perl Scripts 裡面除了可以用系統指令進行檔案處理外, 也可以用 Perl 直接實現, 做法是這樣:複製檔案Perl 沒有內建函式可以複製檔案, 但可以透過載入 File::Copy 實現:上面的語句會將 $old_file 複製到 $new_file.重新命名檔案雖然 Perl 內建有 rename 函式可以用, 但它在某些檔案系統不能運作, 所以用 File::Copy 實現會更好:move 的用法跟 Unix 的 mv 很相似, 以上語句會將 $old_file …

Redhat / CentOS 修改 timezone 系統時區

在 Redhat / CentOS 7 要改變 timezone 可以用以下方法:1. 查看目前 timezone:$ timedatectl status以上指令會顯示目前系統的時間設定, 其中 Timezone 一行就是目前正在使用的 timezone, 例如香港是 Asia/Hong_Kong (HKT, +0800)2. 改變 timezone:可以用 timedatectl 先查看系統包括有那些 timezone 檔案, 但因為輸出列表很長, 可以用 grep 過濾一下, …

Perl 檢查檔案存取及修改時間

Perl 有很多實用的的檔案運算子, 要檢查檔案的最後存取及修改時間, 可以用 -M 及 -A 實現,在程式內可以便可以找出指定時間沒有被取存或修改的檔案, 以下是簡單的例子檢查檔案是否在 30 日內沒有修改過:而除了以上兩個外, Perl 還有很多實用的檔案運算子: -e 檔案存在 -z 檔案是空檔案 (大小為 0) -s 檔案不是空檔案 (回值檔案大小) -f 檔案是普通文件 -d 檔案是目錄 -l 檔案是連結 (檔案系統不支援連結會回傳 false). …

MySQL 資料庫備份及還原

MySQL 的備份可以透過直接複製 MySQL 資料庫目錄(冷備份),或者用 mysqldump 匯出資料庫的完整 SQL 語句實現(熱備份),以下是兩種方法的優/缺點,以及實現方法:冷備份 這種方法最大的好處是簡單,備份只要直接複製資料庫目錄,還原則只要將備份目錄抄回原來位置便可以,而且速度會較快。但缺點是冷備份時必須要關閉 MySQL,如果 MySQL 在執行時進行冷備份,備份檔可能會有不完整及損毀的情況,以下是冷備份步驟:1. 關閉 MySQL:# /etc/rc.d/init.d/mysqld stop2. 把 MySQL 的資料目錄(包括 ibdata1, ib_logfile0, ib_logfile1 等)完整複製到另一個硬碟裡面。3. 開啟 MySQL:# /etc/rc.d/initd/mysql start 這樣就完成了,至於還原的過程同樣簡單,關閉 MySQL 後直接將資料目錄替換原來的目錄,並重啟 …

MySQL 開啟支援 InnoDB

MySQL 在 5.1 版本開始預設沒有支援 InnoDB, 如果用 yum 安裝的話, Redhat 會處理好 InnoDB 支援, 但如果自行編譯安裝的話, 便需要作出一點改動。以前我編譯 MySQL 會用以下參數編譯:這樣會安裝 MySQL 到 /usr/local/mysql51, 並安裝所有額外的 charsets, 如果要在 MySQL 5.1 後支援 InnoDB, 需要加入支援 InnoDB 的參數, 如下:但如果不能重新編譯 …

Apache 2.4 的 VirtualHost 設定

Apache 剛從 2.2 升級到 2.4, 在 Apache 2.4 的 VirtualHost 設定不同以前, 新語法更簡單易用:舊設定方法: <VirtualHost 123.242.230.29>    ServerName testing.testing.com    DocumentRoot /var/www/html </VirtualHost>Apache 2.4 設定方法 <VirtualHost *:80>    ServerName testing.testing.com    DocumentRoot …