2005-01-01から1年間の記事一覧

4.12.2 練習問題

前の問題で作成したサブルーチンを使用して、1から1000までの合計を求めるプログラムを書いてください。 何を求めているのかよくわからない問題だなぁ。 と思いつつ、前のプログラムをちょっと削って足す。 #!/usr/bin/perl -w use strict;my @fred = 1..100…

4.12.1 練習問題

配列の合計を出すサブルーチンを作る問題。 #!/usr/bin/perl -w use strict;my @fred = qw{ 1 3 5 7 9 }; my $fred_total = &total(@fred); print "The total of \@fred is $fred_total.\n"; print "Enter some numbers on separate lines: "; my $user_tota…

4.11.1 アンパーサンドを省略する

これまたid:TransFreeBSDさんに教わった サブルーチン呼び出し時のアンパーサンド(&)*1の省略が 出てきました。 注意する点は以下。 サブルーチンの起動より後ろでサブルーチンを起動すると、Perlが起動されるdivisionの正体をわからないので、省略できな…

4.11 return演算子

id:Baysideさん、id:TransFreeBSDさんに教わった return演算子が早速出てきました。 return演算子の最も多い使い方として サブルーチンの残りを実行せずに、即座に値を返す。 とあります。 C言語のreturnと同じ感じですかね。 戻り値には必ずreturnを明記す…

4.10 use strictプラグマ

id:Baysideさんにご指摘を受けて、既読です。 とっても重要なことなので、 確かに先に勉強しておいてよかったです。:-D 初めてのPerl日記 - use strict

4.9 レキシカル変数(my変数)についての注意事項

foreach (1..10) { my($square) = $_ * $_; print "$_ squared is $square.\n"; } こういう場合、$squareはこのforeach文内のみ有効だそうです。 『初めてのPerl』にも書いてある通り、 メンテナンス上素敵な仕様です。 CやJavaではこの場合どうだったのか覚…

4.8 可変長のパラメータリスト

実世界のPerlコードでは、任意の長さのパラメータリストをサブルーチンに渡すということがよくあります。 ってことは、引数の数を限定しないサブルーチンを 作ることができる。 そしてそれがよくある、ということですね。 そういう関数を他の言語で書いた経…

4章 サブルーチン

Perlでもユーザ定義のサブルーチンを 作れるんだそうです。(さすがに当たり前?) この章で今のところわかったこと。 定義はsubで。 定義は基本的にはグローバル。 呼び出す時は&で。 戻り値は、最後に行われた計算の結果。 引数はローカルな配列@_に代入さ…

3.10 練習問題

一通り動かして、解答を参照。 ...あれ、随分冗長な書き方だな。私。:-( まだ全然わかってない感じ。 まぁ、これも慣れの問題ということで片付けておく。 以下、よくわかってなかった箇所。 print "@hoge\n"; #@hogeを横に並べて出力。最後に改行。 print so…

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

の再登場。 キーボードからの入力を受け付けてくれるようなのは プログラム書きたくなるので嬉しい。:-) 入力を受け付けて、改行を削って表示するだけだと こんなカンジかな? #!/usr/bin/perl -w use strict;print "何でもいいので文字を入力して下さい。\n…

3.8.2 スカラーを生成する式をリストコンテキストで使う

自動的に1要素のリストに変換される、と。 @fred = 6 * 7; #1要素のリスト(42)が得られる @wilma = undef;#これも1要素のリスト(undef)が得られてしまう @betty = ();#配列を空にする正しい方法 2番目と3番目の結果が異なることを注意。

3.8 スカラーコンテキストとリストコンテキストの続き

前回書きかけのまま 仕事が忙しくなってしまいました。 仕切りなおし。 最も重要だというこの章の趣旨は 「式は、置かれている場所によって、意味が変わることがある」 という点です。 これはCなどにはない*1、私にとっては新しい概念でした。 私のよく知っ…

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

ここが、この章で最も大切なセクションです。事実、この本の中で最も重要なセクションだといえるでしょう。あなたがPerlをうまく使えるか否かは、まさにこのセクションにかかっているといっても過言ではありません。だから、これまで流し読みしていた人も、…

3.7.2 sort演算子

値のリスト(配列も指定できます)を受け取って、それを内部の文字順にしたがってソートして返します。 reverseと同じく戻り値を代入するもの、と。 とりあえず流し読み。

3.7.1 reverse演算子

値のリスト(配列も指定できます)を受け取って、そのリストを逆順に並べたものを返します。 これまたファイル処理には便利そうな。 注意することは @hoge = reverse(@hoge); みたいに、代入しないと意味がないこと。

@_$_

Perlお気に入りのデフォルト変数なんだそうです。 @_$_ってのは。 foreachで制御変数を省略すると、 自動的に使われるのが@_$_だそう。

3.6 foreach制御構文

配列を処理するには便利そうなforeach。 さすが文字列を処理するのが得意なPerlです。 実際に動くところを見たいので、 例題を書き写してみます。 #!/usr/bin/perl -w use strict;my $rock; foreach $rock (qw/ bedrock slate lava /) { print "One rock is …

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

ここで覚えたことのメモ。 ダブルクォート文字列の中にメールアドレスを入れると、配列として解釈されちゃうYO!! そりゃそうですよね。 @があるもんね。 そういう時はシングルクォートでやる、と。

pop, push, shift, unshift

popは配列の最後尾の要素を取り出して、返す。 pushは配列の最後尾の要素に追加する。 shiftは配列の先頭の要素を取り出して、返す。 unshiftは配列の先頭の要素に追加する。 あぁ素敵。 配列処理としては便利な演算子たち。 これを回せば全ての要素を舐める…

3章 リストと配列

リストはデータであり、配列は変数である なるほど。 ここで学んだことのメモ。 インデクスは0オリジン。 最後の要素は$#hogeで指せる。 -負のインデクスは-1、-2、-3のみ。ただし実際に使うのは-1のみ。 リストリテラルは(1, 2, 3)で表現。 範囲演算子..は…

2.12 練習問題

5問。 サクっと終わる。 こんな簡単なのでも、 プログラムを書いてちゃんと動くと嬉しい。 解答を見ると、chompを使っている。 なるほど、すっかり忘れていた。 こういう時に使うのね。

2.8-11

chomp演算子、while文、defined関数。 ざっと読み流す。 次はやっと練習問題だ。 ヽ(´ー`)ノ

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

この章の直前までは、Perlのスカラーデータの 説明やら仕様だったので、眠くなる。 必要なのだけど。 まぁ、大体は想定の範囲内ということで、読み飛ばす。 「ユーザからの入力を受け取る」! いいですね。プログラムっぽくなってきました。 という演算子を…

perl -w 再び

2.4 Perlに組み込みの警告メッセージ に登場。 Perlのプログラムを実行する時に perl -w my_program と書く。 するとコンパイルエラーほどではないが でも怪しげな記述に コンパイラがワーニングをあげてくれるそうな。 常にワーニングをあげるようにするに…

2章 スカラーデータ

さらっと読んで、なぜ「スカラー」という名前がついているのか よくわからなかったが、要するに「データのひとつの塊」 という意味だと思われ。 それはそういうものだとして覚える。 ここで知ったことのメモ。 Perlの内部ではほとんど全ての値が倍精度浮動小…

perl -w は保留

ちょっと探してみたけど、 該当する項目が「初めてのPerl」に出てこなかったので、 暫く待ちにさせて下さい。 きっとすぐに出会えると思います。

use strict

第2章はスカラーデータだそうだが、 昨日のコメントでid:Baysideさんから とりあえずuse strictとperl -wを覚えるべし というお言葉を頂いたので、 寄り道してそちらを先に勉強してみる。 ちなみに英語のstrictは「厳しい、厳密な、完全な」とかいう意味。 …

1.5 Perl早わかりツアー

次の例文が出てきた。 #!/usr/bin/perl @lines = `perldoc -u -f atan2`; foreach (@lines) { s/\w]+)>/\U$1/g; print; } foreach文の中の1行目の意味が さっぱりわからないまま、 とりあえず書き写す。 perldocという新しい単語が出てきたので ファイル名は…

メインメソッドとコンパイル

続いてわかったことのメモ。 Perlにはメインのメソッドというかルーチンがない。 ついでに普通はサブルーチンも持っていない。 コンパイルできるけど、効果がある場合は限られている。 上の2つは、CやJavaをやってきた私には 慣れていないことだけど、 早く…

PATH

そういえばActivePerlをインストールする時に Perlのパスを切るか、というチェックボックスがあった。 もちろんONにした。 今、なんだかよくわからないままに c:/perl/bin にhelloworld.plを置いているが 重要そうなPerlのモジュールがたくさん入っているデ…