初めてのPerl

17章(上級テクニック) 練習問題

次のようなプログラムを書いてください。まずファイルから文字列のリストを読み込みます(1行が1個の文字列になっています)。次に、ユーザがキーボードから対話的に入力したパターンを文字列にマッチさせる、という処理を繰り返します。入力されたパターンが…

16章(単純なデータベース) 練習問題3

問題2のプログラムを改造して、データベースから関数を見つけたら、あなたのお気に入りのページャプログラムを起動して、perlfunc.podファイルのその行を見られるようにしてください。 自作コードはこちらです。

16章(単純なデータベース) 練習問題2

コマンドラインからPerl関数の名前を1個受け取って、perlfunc.podファイルの中でその関数が最初に現れる=item行の行番号を表示するプログラムを書いてください。 自作コードはこちら。

16章(単純なデータベース) 練習問題1

perlfunc.podファイルを読んで、その中から=item行に書かれている識別氏名を探し出すプログラムを書いてください。このプログラムは、各識別子が登場する最初の行番号を記録したデータベースを作成します はいはい、やってみました。

15章(文字列処理とソート) 練習問題3

ユーザから与えられた文字列の中から、与えられた部分文字列が現れる場所を全て探して、その位置を表示するプログラムを書いてください。 む…難しい。 タイムアップで機能を実装できていませんが、自作コードはこちらになります。

15章(文字列処理とソート) 練習問題2

下に示したハッシュのデータを、姓のアルファベッド順(大文字と小文字は区別しません)でソートして表示するプログラムを書いてください。姓が同じ場合には、名(やはり大文字と小文字は区別しません)によってソートします。 自作コードはこちらです。

15章(文字列処理とソート) 練習問題1

数値のリストを読み込んで、それを数値としてソートした上で、右寄せで表示するプログラムを書いてください。 あいさー。

練習問題3 (14章 プロセス管理

dateコマンドの出力を解析して、今日が何曜日かを調べるプログラムを書いてください。もしウィークデーならget to work、そうでなければgo playと表示するようにしてください。 初めてのPerl P.249 dateコマンドの出力形式が分かればすぐ。

練習問題2 (14章 プロセス管理

問題1のプログラムを改造して、コマンドの出力をカレントディレクトリのls.outというファイルに書き出すようにしてください。また、エラー出力は、ls.errというファイルに出力してください。 初めてのPerl P.249 これもよくわからなかった問題。

練習問題1 (14章 プロセス管理

あるディレクトリに移動してから、ls -lコマンドを実行して、そのディレクトリに対する詳細形式のディレクトリリストを表示するプログラムを書いてください 初めてのPerl P.248 自作コードはこちらです。 …といきたいところですが、わかりませんでした。

練習問題5 (13章 ファイルとディレクトリの取り扱い

あなたが使っているオペレーティングシステムがシンボリックリンクをサポートしているなら、カレントディレクトリに存在する全てのシンボリックリンクを探し出して、その値を表示するプログラムを書いてください。 初めてのPerl P.229 WindowsXPとActive Per…

練習問題4 (13章 ファイルとディレクトリの取り扱い

あなたが使っているオペレーティングシステムがシンボリックリンクをサポートしているなら、問題3のプログラムを改造して、引数の前に-sスイッチを指定した場合に、ハードリンクの代わりにシンボリックリンクを作成するようにしてください。 初めてのPerl P.…

練習問題3 (13章 ファイルとディレクトリの取り扱い

あなたが使っているオペレーティングシステムがハードリンクをサポートしているなら、lnと同じ働きをするプログラムを書いてください。このプログラムは、1番目のコマンドライン引数に対して、2番目の引数で指定した名前を持ったハードリンクを作成します。 …

練習問題2 (13章 ファイルとディレクトリの取り扱い

mvと同じ働きをするプログラムを書いてください。このプログラムは、1番目のコマンドライン引数で指定したファイルを、2番目のコマンドライン引数で指定しいた名前にリネームします。2番目の引数にはディレクトリも指定できるようにしてください。その場合、…

練習問題1 (13章 ファイルとディレクトリの取り扱い

rmと同じ働きをするプログラムを書いてください。このプログラムは、コマンドラインに指定した全てのファイルを削除します。 初めてのPerl P228 簡単簡単。

12章 練習問題3

問題2をディレクトリハンドルを使ってといた人は、それをグロブを使うように書き換えてください。グロブを使って解いた人は、ディレクトリハンドルを使うように書き換えてください。 今度は12章 練習問題2 - ABラボラトリのコードを改造。以下が作成コードで…

12章 練習問題2

問題1のプログラムを改造して、ドット意外で始まるものだけではなく、全てのファイルを表示するようにしてください。 初めてのPerl P.208 12章 練習問題1 - ABラボラトリを手直しするだけですね。 以下が作成コードです。

12章 練習問題1

次のようなプログラムを書いてください。まずユーザからディレクトリ名を入力してもらい、そのディレクトリに移動します。もしユーザが入力した行に空白文字だけしか含まれていなければ、デフォルトの動作として、そのユーザのホームディレクトリに移動しま…

11章ファイルハンドルとファイルテスト 練習問題3

コマンドラインからファイル名のリストを受け取って、そのうち最も古いファイルの名前とその古さを日数単位で表示するプログラムを書いてください。 初めてのPerl p.200 #! /usr/local/bin/perl use strict; use warnings; #このプログラムの説明 print "引…

11.7 練習問題2

コマンドラインならファイル名のリストを受け取って、その1つ1つについて、読み出し可能か、書き込み可能か、実行可能か、存在しないかを表示するプログラムを書いてください はじめてのPerl p.200 それではまず自作コードを。 #! /usr/local/bin/perl use s…

11.7 練習問題1

第11章[ファイルハンドルとファイルテスト]の練習問題1へ。 ユーザから入力ファイル名、出力ファイル名、サーチパターン、置き換え文字列を入力して貰う様なプログラムを書いてください。 はじめてのPerl P.199 まずは自作解答です。 #! /usr/local/bin/perl…

空文字を判定する

my $char = ''; if ($char eq '') { print "空文字列\n"; } else { print "空文字列ではありません\n"; }意外に単純でした。 ($char eq '')でOKだったと。 [10.10] 練習問題 - ABラボラトリ では ($char == '')とやってたっぽいな。

[10.10] 練習問題

1から100までの間から選んだ秘密の数を、ユーザにあててもらうプログラムを書いてください。このプログラムは、入力した数が当たるまで、何回でも繰り返してユーザに入力を求めます。 初めてのPerl p.175 以下が自分なりの解答です。 print "1から100までラ…

指定した拡張子のファイルを移動させるプログラム

図書館からPerlクックブックを借り、レシピを参考にして前々から欲しかった機能を実装してみました。 どんな機能かというと、 「あるディレクトリが持つサブディレクトリのファイルに対して、 指定した拡張子を持つものを移動先ディレクトリに移す」 という…

wantarray関数を使ってみる

昨日の三項演算子のスマートな書き方 - ABラボラトリのコメント欄でid:kidd-number5さんに教えて頂いた、wantarray関数を用いた三項演算子の慣用表現。とりあえず使ってみようということで、単純なサンプルプログラムを書いてみました。 my @hoge = &hantei(<STDIN></stdin>…

三項演算子のスマートな書き方

三項演算子の記述方法を、どうにかわかりやすくできないものかとググってみたところ、以下のようなドキュメントを発見。 条件演算子は、正しくは以下のように書く。 condition ? true-expression : false-expression三項演算子?:の正しい書き方 このような記…

 メモ

文字クラスの中ではドットは通常の文字として扱われることに注意。 その他に文字クラスショートカットの1つである\wはアンダースコアを含むことにも注意。

バグのない正規表現のパターンを書くのは難しい

練習問題8.6終了。 練習問題を解き終わって思ったのは正規表現はかなりの確率でパターンにバグを含んでしまうということ。 正規表現を学習しはじめて日が浅いからとも考えられるが、このバグ数は明らかに多すぎる。 新しくテストケースを書いて実行させてみ…

第7章終了

第7章終了。 あとは仕上げに練習問題の復習をする。 自分なりに学習した機能を確かめるためのコードを書いて、テストケースを書き、実行させてみるのがプログラミング言語学習には吉っぽいですね。 徐々に楽しくなってきた。

復習メモ

第6章まで復習終了。 やはり見落としはたくさんある。 復習、復習でそれを潰していく。 明日からようやく復習シリーズを終え、正規表現に入っていける。 が、予習→実習→復習のプロセスを忘れないこと。 忘れれば、再び復習する羽目になり、更なる時間のロス…