最近在寫 Perl 的程式,發現在正規比對的時候,print 出中文資料會出現 “
Wide character in print at” 的 warning 訊息,在 google 找到一篇解決方法:
Perl with UTF-8 mode,這篇提出的解決方法有很多種,comment 留言也有提供解法,可以去看一下,還蠻不錯的,那底下是我參考的解法:
只要在表頭加上:
use utf8;
binmode(STDIN, ':encoding(utf8)');
binmode(STDOUT, ':encoding(utf8)');
binmode(STDERR, ':encoding(utf8)');
完整的檔案如下:
#! /usr/bin/perl -w
use Carp;
use File::Basename;
use LWP::Simple;
use WWW::Mechanize;
use LWP::UserAgent;
use WWW::Shorten '0rz';
use Getopt::Std;
use DBI;
use utf8;
binmode(STDIN, ':encoding(utf8)');
binmode(STDOUT, ':encoding(utf8)');
binmode(STDERR, ':encoding(utf8)');
if($_ =~ m/\s*
在
MySQL Performance Blog 裡面發現這篇:
How to pretty-print my.cnf with a one-liner,利用一行 perl 指令把 my.cnf 的註解拿掉:
perl -ne 'm/^([^#][^\s=]+)\s*(=.*|)/ && printf("%-35s%s\n", $1, $2)' /etc/my.cnf
輸出為:
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 16M
thread_concurrency = 8
log-slow-queries = /var/log/mysql/mysql-slow.log
當然同樣的,你也可以利用在 php.ini 或者是其他設定檔上面,提供我平常用 bash 指令來做的,只是沒有經過排版:
cat /usr/local/etc/php.ini | grep -v '^$' | grep -v '^[;]'
上面同樣的把空白行,以及開頭為 ; 的註解拿掉,同樣是可以做到。
最近幫繫上處理
FreeBSD 機器,要碰到大量建制帳號跟 quota,所以上網找了一下教學,網路上就很多教學了,只不過要懂一些
perl 跟
shell script 的基本觀念,在弄起來會比較方便,時間也會縮短許多。
首先開帳號的話,就是利用
pw 這個指令了,這個裡指令非常強大,可以新增使用者,或者是修改使用者的特性,如登入的 shell,comment….等等
先產生一個 passwd.txt 裡面內容格式就是 “帳號,密碼”,這樣的格式
biomat,"xxxx"
biomed,"xxxx"
surface,"xxxx"
tissue,"xxxx"
然後在寫一個 shell 檔去把它讀進來,shell 檔如下:
Continue reading “[FreeBSD] 利用 perl and shell script 大量建制帳號及 Quota”