GA

2012/11/28

bashとPerlの真偽値的な何か

PerlスクリプトでDBI使わずにMySQL接続確認したい…と思ってたら、ハマった。



system("mysql --user=tpcc --password=xxxx") or die("MySQL connection failure.\nexit.\n");


……接続できなくてもdieしてくれないよ!? Σ(゚д゚lll)
というかむしろ、接続出来た時にdieしてるよ!? Σ(゚д゚lll)

↓はちゃんと動くのになぁ。

$ mysql --user=tpcc --password=xxxx || echo die
ERROR 1045 (28000): Access denied for user 'tpcc'@'localhost' (using password: YES)
die


と、思ったら。
system関数の戻り値は実行したプロセスの終了コードなので、接続成功すると正常終了で0なのですね。
ところでPerlの0は偽ですね。
つまり、mysqlコマンドが接続できた時が偽で、接続に失敗した時が真ですね?

...orz


気持ち悪いけど、

system("mysql --user=tpcc --password=xxxx") and die("MySQL connection failure.\nexit.\n");

と書いて事無きを得る。。

0 件のコメント :

コメントを投稿