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

第51回 vim入門 part3

今回は、高速に移動する方法について紹介します。 今回も、入力モードにはならないまま操作の練習をしますよ。 set number $ vim bingo.plでbingo.plを開いたら、 set numberとタイプしてみましょう。これで、行番号を表示してくれます。 行末へ移動 まず、…

第50回 forとwhileの違い その2

第46回 forとwhileの違い その1 - bingo_nakanishiの他言語出身者のためのPerl入門 で、 あるときの例外を除いて、whileはforのように$_に値をいれません。 と述べました。その例外を紹介しましょう。それは、行入力演算子といっしょに使ったときです。 whil…

第49回 行入力演算子とコンテキスト

それでは、話をPerlに戻しまして、ファイルを読み込む話をしたいと思います。「forとwhileの違い」の続きを書く為の伏線です。 ファイルを読み込む為には、以下のように書きます。 open my $file, '<', 'hoge.txt'; はじめてその変数を使うときは、 my を付…

第48回 vim入門 part2

今回もvimに関するお話です。vim入門と題していますが、主にviに関する内容になっていくと思います。題名は将来的にvimの機能もじゃんじゃん使えたらいいなぁという思いを込めて「vim入門」としてあります。 前回のファイルを開いてみよう。 前回、 $ vim bi…

第47回 vim入門 part1

今回は、手法を変えてというか、話題を変えてvimのお話です。 viというエディタがありますが、これを改良した(improved)のが、vimです。このbingo_nakanishiの他言語出身者のためのPerl入門で使われているソースはvimで書いています。 vimが使えるとプログ…

第46回 forとwhileの違い その1

今回は、forとwhileの違いについて。 forで配列をひとつずつ処理する方法は、なんども見てきましたが、whileの例はさほどだしていません。では、次のように書いてみるとどうでしょうか? use strict; my @c = ('a', 'b', 'xxx', 'yyy', 'zzz'); # for と間違…

第41回 $!

ファイルをopenするときに関しての話を続けたいと思います。 前回のようなソース pen my $f, '<', 'hoge.txt' or die 'ファイルが開けないっす'; では、 ファイルに権限がなくて open できなくても、 ファイルそのものがなくて open できなかった場合でも、 …

第40回 例外処理とはそもそもなんぞや

例外処理。 ああ、プログラミングの70%は例外を処理するために書いているのではないか、 そんな気にもなったりするときがあるビンゴ中西です。 例外処理。例外処理とはそもそもなんなんでしょうね〜。 やってますか? 例外処理? 実装してますか? 例外処理…

第39回 evalを学習しよう part2

evalを使えばPerlでも例外処理ができます。 はい 拍手〜〜〜 パチパチパチ ということでevalを使った例外処理の例をみていきましょう。 次のソースをみてみてください。 Perlでは0での割り算はできません。 0で割り算すると、エラーとなりその行以降の処理は…

第38回 evalを学習しよう part1

今回は、 eval というものを説明します。 これのひとつの機能としては、「文字列をPerlの文として評価する」ということがあげられます。次の例をみてほしい。 ソース 単なる文字列を表示 use strict; my $c = q{print 'Hello', "\n";}; print $c, "\n"; 結果…

第37回 Perlで小技5

○ 配列からユニークなものだけ取り出す 配列からユニークなものを取得したいときは、ハッシュを使えばよい。 (いろんなページでソースが載っていますね) ソース1 use strict; use Data::Dumper; my @c = qw(aa bb cc dd aa cc ee ff gg ff); my %d; $d{$_}…

第36回 Perlで小技4

print について 今まで、なにげなしに、printを使ってきたが、 printの挙動について、ちょっと詳しくみてみよう。 配列をそのまま与える つぎのように、配列をそのまま与えてみる ソース use strict; my @c = ('aaa', 'bbb', 'ccc'); print @c, "\n"; 結果 a…

第45回 Java的な例外処理

でも、 ifで例外処理をするというのも、 なんだかなぁ〜という人のために、Java的な例外処理を可能にするモジュールがあります。 それが、Error.pm CPANから落としてくる必要はありますが、便利なモジュールだと思います。 ビンゴ中西のほげほげKansai.pm第1…

第44回 evalで例外処理

evalで囲ってしまって、dieさせない例を見てきました〜。 さてさて、次のようなことを考えてみましょう。 ファイルを無事にopenできた場合は、ファイルを読み込んで正常な処理をする。 もし、ファイルがopenできなかった場合はその旨をデータベースに残して…

第43回 dieをイバってdieさせない

warnを使えば、警告だけでて、プログラムが終了しないのをみてきましたが、誰かが作った関数の中で、 die されていたらおしまいです。 これは、まいりますねー。 use strict; # だれかが作った関数ということにする sub hoge { print '僕が作ったよ この関数…

第42回 warn

die を書けば、プログラムはそこで終了してしまうわけですが、 warn にすると、プログラムは終了しません。これをつかって、 ファイルが open できなくても、警告メッセージを出すだけにとどめ、処理を続けることができます。 まず、dieを使った例を見てみて…

第32回 前回のソースの説明

さて、どこから説明したらいいものやら...... という感じなのですが、前回のソースの説明をしたいと思います。前回のソースはもうひとつ窓を開けてもらって(別のブラウザとかで見てもらって)ここでは、部分的に説明していきたいと思います。 まずは、 new …

第35回 Perlで小技3

CSVから配列に落とし込む use strict; my $c = 'aaa,bbb,ccc,ddd'; my @d = split ',', $c, -1; print $_, "\n" for @d; 結果 aaa bbb ccc ddd CSVをTSVに変換 置換バージョン use strict; my $c = 'aaa,bbb,ccc,ddd'; $c =~ s/,/\t/g; print $c, "\n"; 結果…

第34回 Perlで小技2

Perlでファイルをopenするときは、以下のような感じで書きます。 ファイルを読み込む例 use strict; open my $f, '<', 'hoge.txt'; while(<$f>){ print $_; } という変わった記号(行入力演算子と呼ばれる演算子)と、whileのコンビで1行ずつ読み込みができ…

第33回 Perlで小技1

今回からは、Perlを使って、 細かいことや、こんなことが(簡単に)できるよーといったことをツラツラと書いていこうと思います。 (オブジェクト指向に関しては残念ながら前回で終了にします) ピラミッド よく大学のプログラムの授業で、 * ** *** ****と…

第31回 Perlでオブジェクト指向を書こう

さて、オブジェクト指向のプログラムを書いてみようといったので書いてみました〜。といってもいきなりソースを載せるのもなんなので、まずどんなプログラムを書こうとしたか。 そこからお話させていただきます。今朝、電車に乗ると必死で、PSPをされている…

第30回 変数が関数(メソッド)を呼び出せればオブジェクト指向

さて、オブジェクト指向を語りだすと長くなるので、(怒れてしまう可能性もあるが)ずばっとオブジェクト指向とはどんなものかというの説明すると、 「変数が関数(メソッド)を呼び出せればオブジェクト指向だ!!」 これにつきる(あくまで今の時点の私の…

第29回 オブジェクト指向とはなんぞや

Perlには、クラスは存在しない。 では、オブジェクト指向にクラスが必要だ!という立場をとるなら、Perlでオブジェクト指向はできないことになる。 だが、そうすると、JavaScriptにもやはりクラスはないので、やはりJavaScriptでもオブジェクト指向をするの…

第26回 別パッケージの関数を呼び出すいろいろな方法 まとめ

さあ、 別パッケージを呼び出す方法が、たくさん出てきたので、混乱してきたところではないだろうか? いままでのところをまとめよう。 別パッケージの関数を呼び出す方法 パッケージ名::関数名 blessされた変数->関数名 'パッケージ名'->関数名 パッケージ…

第28回 blessは各々のパッケージに任せよう

さて、ただblessするだけの関数を作ったが、 これを各々のパッケージに持たせることで、 各パッケージに、blessされた変数を返してもらうことにする。これにより、 パッケージ名::blessされた変数を返す関数 という書式で、そのパッケージの関数を呼び出せる…

第27回 blessの使い方にもっと精通しよう

では、Perlでオブジェクト指向をするのに必要な bless の知識に話を戻していこう。 まず、 第24回 別のパッケージの関数を呼び出すもう1つの方法 bless - bingo_nakanishiの他言語出身者のためのPerl入門 で、扱ったblessの内容をまとめておく。 blessとは …

第25回 別のパッケージの関数を呼び出す「さらに」もう1つの方法

前回は、blessを用いた別パッケージにある関数を呼び出す方法をみた。 パッケージ名::関数名 と blessされた変数->関数名 の違いを探る旅にでよう。 だが、ちょっとまった!!!! 実は、もうひとつ別パッケージを呼び出す方法があるのだ!!!!!!! それ…

第24回 別のパッケージの関数を呼び出すもう1つの方法 bless

前回、パッケージによって名前空間を作り出し、 名前空間の名前::関数名 という書式で関数を呼び出せることを見ました。 実は、この書式ではなくても、他のパッケージの関数を呼び出す方法があります。 それが bless です。 bless 早速、例を見ていきたいと…

第23回 package

package Perlで「名前空間」を作りたければ、 package(パッケージ)を使います。 packageは、Perlで「オブジェクト指向」を行うときの前提知識のひとつなのでしっかり覚えておきましょう。「名前空間」というのは、苗字みたいなものですね。 名前空間 use s…

第22回 実行する前にわかるエラーと実行時にわかるエラー

前回、 シングルクォートで囲った中身に、シングルクォートを書くとエラーになるといった話題を扱ってきたので、今回は、表題の通りの話題でいきたいと思います。 bingo.pl というファイル名で書いたperlを実行するなら、次のようにすれば実行できるであろう…