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では多くの場合、変数や値が省略されると$_を使用する。 foreachで制御変数を省略した場合や、print演算子の引数を 省略した場合など。 #!/usr/bin/perl -w @list = qw/ each eachother eager eagerbeaver eagerly /; foreach (@list) { $_ .= "\n"; pri…
配列をまとめて処理したい場合は、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…
[]の中は問題を解くのにかかった時間。 問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"とした方が わかりやすくて、よかったと思う。 問…
タグ[hoge]の注目エントリーやら、ギークのブクマやら、 いろいろと他人のブクマをRSSで読んでるわけですが それらのエントリー数(読んでいないものも含む)を 打率、それらの中から自分のブクマに入れたエントリー の数を安打数とすると、ブクマ打率(仮)…
defined関数は、引数がundefなら偽を返し、 それ以外の値なら、真を返す。 つまり、0や空文字とundefを区別できるということ。 #!/usr/bin/perl -w $s = 0; while ( $s < 2 ) { if ( $n ) { # 1回目のループでは$nはundef、2回目は0 print "\$nは未定義では…
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制御構造を使う。 $n = 0; while ( $n < 10 ) { $n += 1; }条件式が真の間だけ、ブロック内の処理を繰り返す。 最初から条件式が偽になった場合は、ブロック内の処理は 一度も処理されない。
キーボードから入力された値を受け取るには、 行入力演算子を使う。 #!/usr/bin/perl -w print "何か入力してください。\n"; $line = <STDIN>; print "$lineと入力しましたね。\n";何か入力してください。 hoge hoge と入力しましたね。がある行で、プログラムがい</stdin>…
条件分岐を行うには、if制御構造を使う。 if (条件式1) { コード1 } elsif (条件式2) { コード2 } else { コード3 }上から順に、条件式を判定し、真であれば、ブロック内のコードを 実行、残りの処理をスキップし、if制御構造を抜ける。 どの条件式も真でな…
数値を比較するのは数値比較演算子。 文字列を比較するのは文字列比較演算子。 これらは共に、真か偽を返す。 比較 数値 文字列 等しい == eq 等しくない != ne より小さい lt より大きい > gt より小さいか等しい le より大きいか等しい >= ge #!/usr/bin/p…
今更だが、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 -w my_program -wオプションを指定してやると、余りよろしくない書き方、 "123hoge456"を数値として使うなど、をした場合に、 警告メッセージが表示される。 常に警告をオンにしておきたい場合は、 #!/usr/bin/perl -wとする。 よろしくない書き方を…
はてブで[後で読む]というタグをつける人に、不満を持つ人が 少なからずいるらしい。 「読んでから評価しろ」ってことだろう。 僕としては、他人がどんなタグを付けようと、余り気にしない。 [後で読む]タグを付けていなくても、どうでもいいような記事を、 …
スカラー変数には、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
gDriveの代わりに使おうと、gSpaceを入れてみた。 早速、6Mほどのファイルを上げてみる。 gDriveより速い、あっという間に99%になった。 けどそこから全然動かない。 Gmailを確認すると、blank.txtってファイルがアップされてる。 エラーメッセージでも書い…
Sygateをダウンロードしようと思ったら、4ヶ月も前に買収されてた。 サイト内を探すも、有償版しか見つからない。 で、代わりにJeticoをインストールするも、Win98と相性が悪いらしく、 すぐフリーズ。しかも設定も難しいので、即削除。 で、代わりの代わり…