2005-12-01から1ヶ月間の記事一覧

リストコンテキストでを使う。

スカラーコンテキストでは、は入力を1行だけ読みこんで返す。リストコンテキストでは、入力を最後まで読みこんで、1行を1要素とするリストとして返す。 キーボードから入力している場合は、Ctrl-D(Unix系)かCtrl-Z(Windows)を押すと、入力が終わりである…

スカラーコンテキストとリストコンテキスト

Perlが式を解析する際、スカラー値かリスト値のどちらかを期待する。その期待するものが、その式のコンテキスト。同じ式であっても、状況に応じて、返される結果が異なる。 #!/usr/bin/perl; @list = qw/ a b c /; ($a) = @list; # リストコンテキスト $b = …

配列を操作する演算子

pop演算子 pop演算子は配列の末尾の要素を取り出す。 取り出された要素は、元の配列から削除される。 #!/usr/bin/perl -w @list = (1..5); $last = pop @list;i # 末尾の要素を取り出す print "@list : $last\n"; pop @list; # 削除するだけなら、これでOK p…

リスト代入

$a = 1; $b = 2; $c = 3;リストを使うと、上の3行を1行にまとめることができる。 ($a, $b, $c) = (1, 2, 3);変数の方が多い場合は、余った変数にはundefが代入され、 値の方が多い場合は、黙って捨てられる。

Perlお気に入りのデフォルト変数:$_

Perlでは多くの場合、変数や値が省略されると$_を使用する。 foreachで制御変数を省略した場合や、print演算子の引数を 省略した場合など。 #!/usr/bin/perl -w @list = qw/ each eachother eager eagerbeaver eagerly /; foreach (@list) { $_ .= "\n"; pri…

foreach制御構造

配列をまとめて処理したい場合は、foreach制御構造を使う。 foreachループは、繰り返しのたびに、制御変数(下の例だと $word)にリストから取り出した値をセットし、ブロック内の 処理を実行する。 foreach $word (qw/ a aback abacus abalone abandon /) {…

配列を文字列の中に展開する

配列をダブルクォート文字列の中に入れると、 間にスペースを挟んで、変数展開される。 #!/usr/bin/perl -w @list = qw/ a b c d e /; print "@list\n";a b c d e ダブルクォート文字列の中に@を入れる場合は、 その前に逆スラッシュを置く。 print "hoge\@h…

配列

配列とはリストを保持する変数のこと。 配列全体は、@配列名、として表す。 @nums = (1..100); @chars = qw/ a b c d e /; 配列はリストの要素にはならない。 配列名は、その配列が持っているリストに置きかえられる @chars qw/ b c /; @list = ('a', @chars…

リスト

リストとは、スカラーの集合に順序を付けて並べたもの。 全て数値あるいは文字列でなければならない、ということはなく、 それらを組み合わせて保持することもできる。 リストリテラル プログラム中でリストを表すには以下のように書く。 () # 空のリスト (1…

2章練習問題

[]の中は問題を解くのにかかった時間。 問1[1] #!/usr/bin/perl -w $p = 3.141592654; $hankei = 12.5; $ensyuu = $hankei * 2 * $p; print "$ensyuu\n";OK ただ、最後はprint "半径が12.5の円周は$ensyuu\n"とした方が わかりやすくて、よかったと思う。 問…

ブクマ打率(仮)

sbm

タグ[hoge]の注目エントリーやら、ギークのブクマやら、 いろいろと他人のブクマをRSSで読んでるわけですが それらのエントリー数(読んでいないものも含む)を 打率、それらの中から自分のブクマに入れたエントリー の数を安打数とすると、ブクマ打率(仮)…

defined関数

defined関数は、引数がundefなら偽を返し、 それ以外の値なら、真を返す。 つまり、0や空文字とundefを区別できるということ。 #!/usr/bin/perl -w $s = 0; while ( $s < 2 ) { if ( $n ) { # 1回目のループでは$nはundef、2回目は0 print "\$nは未定義では…

rxvtをインストール

Poderosaが少し重いような気がする。 代わりの端末として、rxvtを試してみることに。 http://cygwin-je.sourceforge.jp/cygwin_je/を Cygwinのセットアップで指定。 rxvt日本語版をインストール。 cygwin.batを書き換え。 @echo off C: rchdir C:\cygwin\bin…

未定義値

値を代入する前のスカラー変数は、undefという特別な値を 持っている。 undefを数値として扱えば、0として振る舞い、文字列として 扱えば、空文字として振舞う。 #!/usr/bin/perl -w $w .= "hoge"; # "" . hoge $x += 100; # 0 + 100 $y -= 100; # 0 - 100 $…

while制御構造

繰り返し処理を行うには、while制御構造を使う。 $n = 0; while ( $n < 10 ) { $n += 1; }条件式が真の間だけ、ブロック内の処理を繰り返す。 最初から条件式が偽になった場合は、ブロック内の処理は 一度も処理されない。

ユーザーからの入力を受け取る

キーボードから入力された値を受け取るには、 行入力演算子を使う。 #!/usr/bin/perl -w print "何か入力してください。\n"; $line = <STDIN>; print "$lineと入力しましたね。\n";何か入力してください。 hoge hoge と入力しましたね。がある行で、プログラムがい</stdin>…

if制御構造

条件分岐を行うには、if制御構造を使う。 if (条件式1) { コード1 } elsif (条件式2) { コード2 } else { コード3 }上から順に、条件式を判定し、真であれば、ブロック内のコードを 実行、残りの処理をスキップし、if制御構造を抜ける。 どの条件式も真でな…

比較演算子

数値を比較するのは数値比較演算子。 文字列を比較するのは文字列比較演算子。 これらは共に、真か偽を返す。 比較 数値 文字列 等しい == eq 等しくない != ne より小さい lt より大きい > gt より小さいか等しい le より大きいか等しい >= ge #!/usr/bin/p…

bashのキーバインドを変える

今更だが、bashでEmacs風のキーバインド使えることを知る。 で、キーバインドをVi風に変えれることも発見。 $ set -o viViに慣れてきたせいか、こちらの方が扱い易いが、 モードが表示されないので、少々わかりづらい。 ちなみに、Emacs風のキーバインドに戻…

演算子の優先順位

算数に、加算よりも乗算を先に計算するというルールが あるように、Perlの演算子にも優先順位がある。 Perl の演算子と優先順位 例えば、*は.よりも優先順位が高い。 下のような場合、先に乗算をしてから、文字列を連結する。 #!/usr/bin/perl -w $a = 5 .…

検索フォームをコマンドラインンのように使う

POLAR BEAR BLOG: 好みのショートカットコマンドが作成できる"Yahoo! Open Shortcuts"がスタート Yahoo! Open Shortcuts 米Yahoo!にログインして、検索フォームで !set hbt http://b.hatena.ne.jp/t/%sと入力すると、ショートカットが登録される。 で、その…

Perlに組み込みの警告メッセージ

$ perl -w my_program -wオプションを指定してやると、余りよろしくない書き方、 "123hoge456"を数値として使うなど、をした場合に、 警告メッセージが表示される。 常に警告をオンにしておきたい場合は、 #!/usr/bin/perl -wとする。 よろしくない書き方を…

ほんとに「後で読み」たいなら

sbm

はてブで[後で読む]というタグをつける人に、不満を持つ人が 少なからずいるらしい。 「読んでから評価しろ」ってことだろう。 僕としては、他人がどんなタグを付けようと、余り気にしない。 [後で読む]タグを付けていなくても、どうでもいいような記事を、 …

スカラー変数

スカラー変数には、1個のスカラー値を入れることができる。 スカラー変数の名前は、ドル記号の後ろに、Perl識別子*1を 並べたもの。 大文字と小文字を区別する。 適切な変数名を選ぶ 変数名には、その用途がわかるような名前をつける。 $rよりも、$urlや$key…

文字列

シングルクォート文字列リテラル 文字列をシングルクォートで囲んだもの。 'Don\'t foget.' # Don' foget. 'Hello, world.\n' # Hello, world.\n 'Hello\\' # Hello\シングルクォートを入れる場合は、直前に逆スラッシュを置く。 シングルクォート文字列で、…

数値

Perlでは整数と浮動小数点数*1の両方が使える。 ただし、どちらの数値も内部では、倍精度浮動小数点数として 計算が行われる。 浮動小数点数リテラル 1.25 3.4e15 # 3.4かける10の15乗 -5e-26 # -5かける10の-26乗浮動小数点数とは言うものの、小数点はなく…

スカラーデータ

数値や文字列などの単数データのこと。 演算子を作用させることができる。 ファイルやデバイスから読み込むことができ、 書き出すこともできる。 リテラル リテラルとは、ソースコードに直接書かれた値。 演算やI/O捜査の結果として得られるものではない。

ベタですけど

初めてのPerlを購入。 これを使って学習していく。 お約束ということで、Hello, worldを表示するプログラム。 #!/usr/bin/perl print "Hello, world\n";Hello, world

gSpaceを使ってみましたが

gDriveの代わりに使おうと、gSpaceを入れてみた。 早速、6Mほどのファイルを上げてみる。 gDriveより速い、あっという間に99%になった。 けどそこから全然動かない。 Gmailを確認すると、blank.txtってファイルがアップされてる。 エラーメッセージでも書い…

Kerio2をインストール

Sygateをダウンロードしようと思ったら、4ヶ月も前に買収されてた。 サイト内を探すも、有償版しか見つからない。 で、代わりにJeticoをインストールするも、Win98と相性が悪いらしく、 すぐフリーズ。しかも設定も難しいので、即削除。 で、代わりの代わり…