サンプル
#/usr/bin/perl
while(1) {
#ToDo
}
解説
while(){...}は、()の中が真の間ループを繰り返します。
0が偽で1が真ですから、while(1)で、常に真と判定されます。
※0は偽ですが、真が1かどうかは言語や実装によって異なります。
いずれにしても0でない=真、ですから無限ループになります。
サンプル
#/usr/bin/perl
while(1) {
#ToDo
}
解説
while(){...}は、()の中が真の間ループを繰り返します。
0が偽で1が真ですから、while(1)で、常に真と判定されます。
※0は偽ですが、真が1かどうかは言語や実装によって異なります。
いずれにしても0でない=真、ですから無限ループになります。
サンプル
#!/usr/bin/perl
$a = 2;
$b = 3;
if ($a != $b) {
print ‘$a != $b’,”\n”;
}
実行結果
$a != $b
!=の代わりに<=>でも可。
サンプル
#!/usr/bin/perl
if ( 01 == 001 ) {
print “true(1)\n”;
}
if ( “01” == “001”) {
print “true(2)\n”;
}
if (“a” == “b”) {
print “true(3)\n”;
}
if ( “a” eq “b”) {
print “true(4)”;
}
実行結果
true(1)
true(2)
true(3)
解説
==や!=は両辺を数値として比較し、
eqやneは両辺を文字列として比較します。
文字列なのに数値として比較しようとした場合、両辺とも変換できない=if文成立、です。
print @array;
などとしただけでは空白区切りなので、$”に区切り文字を代入します。
サンプル
#!/usr/bin/perl
@array=(1,2,3,4,5);
$”=”,”;
print “@array”;
実行結果
1,2,3,4,5
なお、ダブルコーテーションで囲わないと展開されないので12345と表示されます。
カンマではなく、タブや\nで区切ることも当然可能。
1ずつ増減するにはインクリメント/デクリメントである++や--を使いますが、
1ではない数で増減させたいときがあります。
サンプル
#!/usr/bin/perl
for ($i=0;$i<10;$i+=2) {
print “$i\n”;
}
実行結果
0
2
4
6
8
$i += 2 は $i = $i +2 と同じです。(*)
同様に
$i –= 2 は $i = $i – 2
$i *= 2 は $i = $i * 2
$i .= “hoge” は $i = $i . “hoge”
を表します。
(*)本当は実行速度が少しだけ違うけど、最近のマシンはハイスペックだし、
そもそもPerlの時点で実行速度なんて亀だし。
サンプル
#!/usr/bin/perl
$a = 3;
$b = ++$a;
print “$a $b\n”;
$a = 3;
$b = $a++;
print “$a $b\n”;
実行結果
4 4
4 3
++$aは、$aがインクリメントされてから$bに代入されますが、
$a++は$bに$aが代入されてから$aがインクリメントされます。
CGI(というか実体はシェルスクリプト)から日々携帯にメールするようcronに仕込んだところ、迷惑メールフィルタが発動するのか、ほとんど届きませんでした。
sendmail → Gmail … OK
sendmail → OCN … NG
sendmail → au … NG
Gmail → au … OK
Gmailから携帯に送るメールは即受信するので、インターネット→携帯が一律に遅延するわけでもなさそう。
#sendmailからだから、送信元偽装と見なされているのかも?
仕方がないのでGmailに送信→Gmailのフィルタで拾って携帯に転送することにしました。
自宅のグローバルIPアドレスを確認するだけです。
#!/usr/bin/perl
$mailto = hoge@hoge';
$subject = 'IP';
$mailcmd = '/usr/sbin/sendmail';
$mailfrom = 'fuga@fuga';
require "mimew.pl";
#
# create mail header
#
$mailhead = "";
$mailhead .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\n";
$mailhead .= "Content-Transfer-Encoding: 7bit\n";
$mailhead .= "MIME-Version: 1.0\n";
$mailhead .= "To: $mailto\n";
$mailhead .= "From: $mailto\n";
$mailhead .= "Subject: $subject\n";
$mailhead .= "\n";
#
# create mail body
#
$mailbody =`wget -q -O - --http-user=USER --http-password=PASSWD "http://192.168.0.1/cgi-bin/main.cgi?mbg_webname=status&config_no=1"|egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head –1 `;
chomp $mailbody;
#
# send mail
#
$cmd = "$mailcmd -t";
unless (open(OUT, "| $cmd")) {
&errexit("error(1)");
}
unless (print OUT &mimeencode($mailhead)) {
&errexit("error(2)");
}
unless (print OUT $mailbody) {
&errexit("error(3)");
}
close(OUT);
IE用のWindows Live Toolbar にはカスタムボタンを追加することができます。
Microsoftのギャラリーhttp://gallery.live.com/default.aspx?pl=3で探しても希望のボタンが見当たらなかったので、自分で作ることにしました。
http://gallery.live.com/createcustombutton.aspx
で必要な情報を入力して「作成」ボタンを押すだけです。
まず、「基本情報」で、ボタンの名前やアイコン、クリックした際のリンク先を決めます。
テキストラベル:アイコン画像横のボタン名。インストール/アンインストール時の表示名でもあるので、短く適切に。
名前とキーワード:適当に。英数字のみ。
ツールチップ:ボタンにマウスカーソルを乗せたときに表示される説明文。日本語OK。
URL:ボタンをクリックしたときにジャンプするサイトを指定。複数指定した場合、1クリックで全URLが開く。
また、「メニューの追加」で、ボタンの右に▼マークとして展開されるメニューが作れます。
例えば基本情報でhttp://google.co.jp/をリンク先にして、メニューにGmailやGoogleカレンダーを登録すれば、オリジナルGoogleボタンの完成です。
「作成」ボタンを押したら
が表示されるので、一番上の「ツールバーに追加」でインストールします。
あとは通常のツールバーボタンと同じなので、非表示にしたりアンインストールしたりできます。
ナローバンドは値上がり傾向。
~512Kbpsで4000円弱。
ブロードバンドは値下がり。
1~2Mbpsで4000円強、
2~4Mbpsで5000円弱、
4~8Mbpsで6000円強。
いずれも月額。
日本の感覚からすると馬鹿高い。
参考:http://internet.watch.impress.co.jp/cda/news/2009/03/26/22916.html
turbo+でtelnetともども導入できたはずなのにPATHが通らない。
探したら
/usr/kerberos/bin
に発見。
不慣れな鳥は使いにくいー
やっぱりCentOSとFreeBSDがいいと実感。
最新版だとやたらと不正落ちするので、前のバージョンを入れられないか画策したところ、
以下のサイトを発見。
Skype以外にも旧バージョンが公式から消えるiTunesやMSN Messengerが置いてあって便利そう。
前提1:Windowsで予めフォルダを共有設定しておく。
前提2:Linuxにはsmb-clientを入れておく。
Linuxで以下のコマンドを実行。
mount -t cifs //(WindowsのIPアドレス)/(共有フォルダへのパス) (マウントポイント)
例)
# mount -t cifs //192.168.0.3/C/Shared ./Win_Shared/
共有フォルダにアカウントを設定してある場合は-o username=で設定する。
例)
# mount -t cifs //192.168.0.3/C/Shared ./Win_Shared/ -o username=hoge