カテゴリー「プログラミング」の42件の記事

2013年12月 5日 (木)

bashの正規表現その2(不完全版)

久しぶりのエントリです。bashスクリプトの正規表現・・・とかいうタイトルで5年前に書いたのですが、これは、bash自身というよりも、exprコマンドで正規表現が扱えますよ・・・という内容でした。まぁそれはそれで良いと思うのですが、実はbash自身に正規表現の機能があるってことを最近知ったので、書いてみます。

お題

データを行毎に記録したテキストファイル(例:data.txt)がある。そのテキストファイルを1行ずつ読み取って、コマンドを実行したい。ただし、#で始まる行や空行は無視したい。

入力

$ cat data.txt 
one 
#two
thr#ee
four 
  
five 
six# 
se #ven
 
 nine 
ten 
$

解答と実行結果

[[ 対象文字列 =~ 正規表現 ]]
でマッチ/アンマッチの判定ができる。ポイントは、正規表現をダブルクォートで囲まない事。みたい。
$ cat regexp.sh 
#!/bin/sh 
TARGET_FILE="data.txt" 
while read LINE 
do 
    if [[ $LINE =~ (^#|^ *$) ]]
    then 
        continue 
    else 
        echo "$LINE" 
    fi 
done < $TARGET_FILE
 
$ ./regexp.sh
one
thr#ee
four
five
six#
se #ven
nine
ten
$ 

後方参照

さらには、括弧でくくった場所を
${BASH_REMATCH[x]}
で後方参照できる。
${BASH_REMATCH[0]} #-> マッチ全体
${BASH_REMATCH[1]} #-> 1番目の括弧
${BASH_REMATCH[2]} #-> 2番目の括弧
:

お題2

#記号を含む行を出力したい。加えて、該当行のうち#記号から行末までの文字列を抜き出したい。

解答と実行結果

$ cat ./regexp2.sh
#!/bin/bash
TARGET_FILE="data.txt"
while read LINE
do
    if [[ $LINE =~ ^[^#]*(#.*)$ ]]
    then
        echo -n "${BASH_REMATCH[0]},"
        echo    "${BASH_REMATCH[1]}"
    else
        :
    fi
done < $TARGET_FILE
 
$ ./regexp2.sh
#two,#two
thr#ee,#ee
six#,#
se #ven,#ven
$

メタキャラクタ

良く分からないのは、このbashの正規表現で使えるメタキャラクタです。数値の意味で\dが使えないのです。(文字'd'にマッチしちゃうみたい)どこかにbashで使える正規表現のメタキャラクタの一覧がないかなぁ。

| | コメント (0) | トラックバック (0)

2011年11月21日 (月)

Androidアプリ開発その4

AVD(Android Virtual Devices)っていうのは、Androidのエミュレータに対して、特定のバージョンのハードをエミュレーションさせるための端末情報を保持する仕組みみたい。(汎用の)エミュレータ+(特定のバージョンの情報を保持する)AVDで特定の機種(バージョン)のAndroid端末をエミュレーションするっていう理解で良いのかしら。

とにかく、Eclipseを起動して、「ウィンドウ(W)」→「AVD Manager」で「Android Virtual Device Manager」を起動。
最初は中身が空で、No AVD availableなんて書いてあるので、「新規...」をクリックして「Create new Android Virutual Device (AVD)」を起動する。
「ターゲット:」欄をクリックして、好みのバージョンのOSを選択するんだけど、「Android x.x - API Level yy」ってのと、「Google APIs (Google Inc.) - API Level yy」ってのは何が違うんでしょ?(Google APIsを選ぶと、エミュレータ内でGoogle MapとかのGoogleのAPIも擬似ってくれるのかな?)とりあえず、なぜかタブレットを意識して、「Android 3.2 - API Level 13」を選択。すると、下の「ハードウェア:」欄に自動的にいくつかプロパティー項目が追加された。いろいろいじった方が良いのかも知れないけど、よく分からないので、とりあえずデフォルトで、名前は適当に「MyTablet3.2」。

image

これで「Create AVD」すると、元のAndroid Virtual Device Managerに今作ったAVDが追加された。ついでに2.3.3と4.0も作ってしまう。よく分からないので、パラメータはすべてデフォルトで。
image

さて、これでやっと準備が整ったみたいなので、やっとこさHello, Worldに取り掛かれます。

| | コメント (0) | トラックバック (0)

2011年11月 8日 (火)

Androidアプリ開発

いろいろあってAndroidアプリ開発を家でもやってみることにした。半年ほど前にMacBook上で環境構築してみたのだけど、画面が狭い(1280x800)のとメモリが少ない(2GB)ので、デスクトップ(Windows7 64bit)でやりなおしてみることにした。って今調べてみたら、デスクトップもメモリ2GBだったよ。。。

まずはJDKのダウンロードから。OpenJDKってのがあるんだっけ?と調べてみると、どうやらLinux版しかないみたい。なので、普通にOracle(!)からダウンロードすることに。JDKでググって最初のページがここ。

http://java.sun.com/javase/ja/6/download.html

ここ、画像がリンク切れになってたりしてメンテされてない感を漂わせてて大丈夫かしらと不安になる。ここのJDKダウンロードってリンクをクリックすると、JDK 6u23 ってところに表示が行くんだけど、上にスクロールすると最新は6u25なんだよね。単純にリンクが更新されていないだけ?それとも6u23がStableってことを言っている?しかもJavaFXとかって書いてあるし・・・怪しいなぁと思って、画面右のJava SDKs and ToolsのJava SEをクリック。

んご!こっちが正解じゃん!Java SE Downloadsって書いてあるし、最新はJava SE 7u1みたいだけど、さすがにそれはヤケドしそうなので、その下のJava SE 6 Update 29でいきますか。

http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html

結局このページが求めてたものだ!Goolgeたん検索結果イマイチなんじゃない?それはともかく、ここのWindows x64版を、Accept License Agreement した上で、ありがたくダウンロード

x86版かx64版かで悩んでWikipediaで調べてしまったけど、Core2Duoで64bitOSならx64で正解だよね。

これでやっとこさJDKのインストールができる。ダウンロードしたjdk-6u29-windows-x64.exeをダブルクリックしてインストール開始。パッケージ選択はとりあえず全部入りで、インストール先もデフォルトで。入れ先はC:のSSDなんだけど、ちょっとだけ時間がかかった。2分くらいかしら。

インストールが完了したと思ってたらFirefoxがあがって、「Java Development Kit (JDK) Registration」だそうな。とりあえず、個人情報を入れたり、パスワードは大文字小文字混在じゃないとダメとかいうのを乗り越えて登録してみたのだけど、確認メールのURLをクリックして確認後やっとログインしてみたら、今度は会社の住所を入れろと!そこでやる気をそがれたので、登録はあきらめて先に進むことに。流石Oracleさん、金にならないアマチュアユーザは登録してもらわなくて結構って感じ?

次はAndroidSDKのダウンロード。こいつはJavaと違って分かりやすいところにあった。

http://developer.android.com/sdk/index.html

んご!ちょっと前に見たときはr13でなかったかしら?r15になってるし。とりあえず.Recommendedだという.exe版を落として、インストール。途中でさっき入れたJDK1.6を見つけたよとか、インストール先はProgram Files (x86)だよとか言ったりするかわいいヤツ。終わるとAndroid SDK Managerなるものが勝手に上がって、なにやら最新のパッケージ情報を取得しているっぽい(?)。4.0とか、3.2とか、2.3.3とか、興味のあるのをチェックして、「Install 20 packages…」するとLicenceの確認(?)されるので、いいよよろしく入れて頂戴と進めると、ダウンロード&インストールが始まった。なんか、いろいろと超大量にあるみたいで、時間がかかってる。10分くらいかかるのかなぁ。

'adb kill-server' failed -- run manually if necessary.

とか出てるのが気になる。あと、

Found Dual Screen APIs by KYOCERA Corporation, Android API 8, revision 1
Found Dual Screen APIs by KYOCERA Corporation, Android API 10, revision 1

Downloading Dual Screen APIs by KYOCERA Corporation, Android API 10, revision 1

なぜKYOCERA!?っていうか、このKYOCERAのAPI 10のダウンロードなかなか終わんないんすけど。current taskを止めるボタンを押しても止まらない・・・ってところで寝ることにします。

| | コメント (0) | トラックバック (0)

2010年12月 9日 (木)

Android開発

意外な事に、仕事でAndroidアプリの開発をやりそうな気配あり。早速Amazonで参考書を物色した。参考書がいくつか出ているなぁとは思っていたけど、本気で探した事が無かったので、改めて探してみると、決め手に欠けてどれを買うべきか悩む。定番本がまだ確立していればありがたいのだけど。それにしてもどれもにたようなタイトルで紛らわしい。Amazonの評価を頼りにすると、この辺が良さそうな感じだった。

  1. 評価はそこそこだが、2009年6月の出版がやや古いか。中身を見てみないと判断が難しい

  2. 評価は高く、分厚いとあって情報量も豊富そう。Androidの基本的な考え方が書いてあるというレビューがあるので、そこもポイント。2009年7月とやや古いのが弱点かも知れないがそこは別の本でカバーすべきかも。これは欲しい。

  3. Amazonの評価はそこそこで、タイトルに2.1を謳っているだけあって2010年5月と比較的新しい本。レビューを良く読むと物足りないところもあるようだが、とりあえずアプリの開発が一通りはできるようになるかなと。結局近所の書店で唯一見つけた本書を購入した。
Android2.1プログラミングバイブル(仰々しい名前)を読みながら、開発環境の構築まで今のところスムーズに進んでいるので、次、まずはサンプルアプリケーションの完成まで行きたいところ。

| | コメント (0) | トラックバック (0)

2010年8月20日 (金)

Macでbash-4をビルド

リポジトリを作る

githubに、なにか面白いプロジェクトないかなぁ、bashとかないかなぁと思っていたら、ありました。これです。始める前は、githubでリポジトリをフォークしてそのURLに対して

 $ git checkout http://... # 誤用

ってやってローカルのMacBookに作業コピーを作れば良いのかと思ってたのですが、入門gitを読むと全然違ってました。分散バージョン管理ってのを根本的に勘違いしてました。gitってリポジトリのコピーとマージが簡単にできるsvnかと思ってたんですが、そうではなく、「ローカルにリポジトリを持ってきてそこで作業をする」んですね。という訳で、最初のコマンドは

 $ git clone git@github.com:endu/bash-4.git

が正解なのでした。

bash-4をビルドする

とりあえず、ローカルにリポジトリができたので、早速ビルドです。

 $ cd bash-4
$ ./configure
$ make
(略)
gcc -L./builtins -L./lib/readline -L./lib/readline -L./lib/glob -L./lib/tilde  -L./lib/sh    -g -O2 -o bash shell.o eval.o y.tab.o general.o make_cmd.o print_cmd.o  dispose_cmd.o execute_cmd.o variables.o copy_cmd.o error.o expr.o flags.o jobs.o subst.o hashcmd.o hashlib.o mailcheck.o trap.o input.o unwind_prot.o pathexp.o sig.o test.o version.o alias.o array.o arrayfunc.o assoc.o braces.o bracecomp.o bashhist.o bashline.o  list.o stringlib.o locale.o findcmd.o redir.o pcomplete.o pcomplib.o syntax.o xmalloc.o  -lbuiltins -lsh -lreadline -lhistory -ltermcap -lglob -ltilde  lib/intl/libintl.a -liconv  -ldl Undefined symbols:
(略)
   "_rl_completion_suppress_append", referenced from:
       _bash_default_completion in bashline.o
       _command_subst_completion_function in bashline.o
       _pcomp_set_readline_variables in pcomplete.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [bash] Error 1
$

がーん。なんで!?どうやら最後のリンクで失敗しているみたいです。

リンクエラーの原因を究明する

リンクエラーの理由を求めてWebをさまようと、やはり困っている人がいて、どうやら、最新のreadlineライブラリ入れる必要があるみたい。readlineのライブラリってどれかなぁ。これかな?なんかへんなの。

 $ ls -l /usr/lib/libreadline.dylib
lrwxr-xr-x  1 root  wheel  15  9 24 2009 /usr/lib/libreadline.dylib@ -> libedit.2.dylib

うーん、じゃあ具体的にはどうしたらイイのさ、と思っていたら、 決定的な記事を見つけました。以下激しく引用。

Mac OS X では GNU の Readline ライブラリがインストールには含まれておらず、Readline 互換の Libedit というライブラリへのシンボリックリンクとなっている(こうなっている理由はライセンス上の問題からだと思われる。GNU の Readline ライブラリは GPL で、Libedit は BSD ライセンスだ)。

しかし、これが原因で Readline 対応のプログラムがコンパイルできない、コンパイルできてもヒストリ機能などが使えない、といった問題がしばしば起こる。

なるほど!で、readlineをインストールするには、MacPortsとやらを使うのが簡単みたいです。MacPortsって名前だけ知ってて何かと思ったら、yumとかapt-getとかそういうやつみたいですね。もし間違ってたら指摘して頂けるととうれしいです。

MacPortsでlibreadline.aをインストールする

まずはMacPortsから。安直に本家からsnow leopard版の.dmgファイルをDL→mount→.pkg起動。あとはインストーラのボタンを順次押すだけでインストール完了。svnでソースをcheckoutするとか、ソースのtarをDLしてmakeもできるみたいだけど、makeで苦労しているのにさらにmakeするのはしんどいので楽なやり方で。.bash_profileに環境変数の設定が追加されているのを確認して、反映。portコマンドが見える!

 $ cd ~
$ cat .bash_profile
(略)
# MacPorts Installer addition on 2010-08-20_at_12:03:34: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.
$ . .bash_profile
$  which port
/opt/local/bin/port

ので、早速libreadline.aを入れてみます

 $ sudo port install readline
Password:
--->  Computing dependencies for readline
--->  Dependencies to be installed: ncurses ncursesw
--->  Fetching ncursesw
--->  Attempting to fetch ncurses-5.7.tar.gz from ftp://ftp.dti.ad.jp/pub/GNU/ncurses
(略)
--->  Fetching readline
--->  Attempting to fetch readline-6.1.tar.gz from ftp://ftp.dti.ad.jp/pub/GNU/readline
(略)
--->  Cleaning readline
$

ncurses,ncureswってのも必要なんですね。portが自動で入れてくれました。

再度bash-4をビルド

configureを走らせる時に、CPPFLAGSとLDFLAGSを、MacPortsで入れたライブラリのパスに設定するのを忘れずに・・・(といいつつ良く分っておりません。最初失敗して、その後Makefileを手で修正しようとして、結局先ほどの記事を参考にさせていただきました。configureの仕組を良く理解せねば。)

 $ make clean
(略)
$ CPPFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib ./configure
(略)
$ make
(略)
ls -l bash
-rwxr-xr-x  1 hide  staff  944128  8 20 13:14 bash
size bash
__TEXT __DATA __OBJC others dec hex
638976 32768 0 4295249920 4295921664 1000e9000
$

できたぁ!

 $ ./bash --version
GNU bash, version 4.0.35(1)-release (i386-apple-darwin10.4.0)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $

| | コメント (0) | トラックバック (0)

2009年10月12日 (月)

Windowsのコマンドプロンプトをckwとnyacusで使いやすくする

Windowsで一番腹立たしいのは、cmd.exeの使いづらさです。pwdとかlsとか使えないし、ctrl-aとかctrl-eとかも使えないし、ヒストリも使いづらい!
で、単純に考えると、cygwin使えばいいじゃんってなるんだけど、cygwinってなんていうか、UNIXをエミュレートしてるんで、いや、そこまでUNIXじゃなくても。それならLinuxつかいますよ的なところがあります。
そんなわけで、Windows上でLinuxライクな環境ができないかなーと思っていたら見つかったので、ここにメモしておきます。

■何を入れるの?
・ckw
Windows上でのシェルのGUIラッパー。シェルの「表面的な操作性」を向上させる。標準ではcmd.exeをラップして、マウスのコピペが楽になったり、背景を透過させたり、日本語入力を半角/全角キーでできたりするようになるみたい。
で、こいつのミソは「シェルを選べる」こと。
すでにオリジナルの公開は終わっているみたいですが、幸いGPLだったおかげで修正版を公開されている方がいらっしゃいます。
http://d.hatena.ne.jp/hideden/20071123/1195822428
それに加えてさらにラップ対象のシェルの画面が残ってしまうバグの対処版も公開されていて、
http://blogs.wankuma.com/shuujin/archive/2008/10/15/158825.aspx
とりあえずこれをありがたくDL

・nyacus(にゃーかす)
  で、選ばれるシェルが、これ。tcshライクな操作性を持つ、cmd.exe上で動作するシェル。今回のキモ。
  ポイントは、Windowsネイティブアプリであることと、Unixの基本的なコマンドも内部的に持っていること。
  bashじゃないのが残念ですが、これでWindows上のコマンドプロンプトでLinuxのような操作感が得られます。
  http://www.nyaos.org/index.cgi?p=TEST+VERSION
  TEST VERSIONとはなっていますが、最新版で良いかと。

・vim
  ちょっとわき道にそれるますが、僕の一番好きなエディタ。xyzzyも良いんだけど、vimの軽快さ、自由自在さに慣れると、やっぱりvimが気持ちよい。xyzzyも慣れたいんだけどなー。
  ctrl-p,nで単語補完とか、*一発で単語検索とか、ビジュアルモードで行を選択して=一発で再インデントとか、qx...q -> @xでマクロとか。 xyzzyでもある程度はいけると思うんだけど。。。こちらは定番香り屋さんからありがたくDL
  http://www.kaoriya.net/#VIM72

■どうやって入れるの?
で、インストールですが、DLしたファイルを展開した後、ckwとnyacusは同一フォルダに配置。私は

[C:デスクトップ]$ ls -1 \freesoft\ckw
NYACUS.EXE
_nya
ckw.cfg
ckw.exe

こんな風に置いてます。で、ckw.cfgでシェルにnyacusを指定

Ckw*exec: c:\freesoft\ckw\NYACUS.EXE

その他ckw.cfgの詳細は、
http://blog.blueblack.net/item_358
を参考にさせていただきました。

それから上記フォルダをworkディレクトリとして起動するようにckwへのショートカットをデスクトップに作成。
#これはお好みで。PATHを通したりするのが上品なのかも。

vimはお好みですが、

freesoft\vim

配下に配置しました。

で、_nyaの設定ですが、プロンプトが改行が入っていまいちなので、一行になるように修正("$_"を消しただけ)。

# option prompt $e[31;40;1m[$w]$_$$ $e[37;1m
option prompt $e[31;40;1m[$w]$$ $e[37;1m

あと、vimへのaliasを作成

alias vi c:\freesoft\vim\vim.exe
alias vim c:\freesoft\vim\vim.exe

その他の設定はここを参考にさせていただきました。
http://umeji.blogspot.com/2008/05/nyacusckw.html

その他、nyacusに付属していないツールについて
http://qwerty777.s57.xrea.com/winunix/command.htm
を参考にインストールすると良いかと。

| | コメント (0) | トラックバック (0)

2009年8月22日 (土)

iPhoneアプリで週末起業

何かのページで読んだのですがiPhoneアプリビジネスはいまやレッドオーシャンだそうで、すでにビジネスとしてのうまみはないのかもしれません・・・が、まだ夢はあると思います。

で、本書なのですが、タイトルからしていかにも流行のネタに乗っかった薄っぺらい本で、むしろSDKの解説本を買った方がよいかも・・・と思ったら、さにあらず。iPhoneアプリ開発ビジネスに関する、かなり具体的なノウハウ本になってます。

1章はiPhoneアプリビジネスの全体像、うまみや注意点について。2章はiPhoneに限らず、アンドロイドを中心に、NOKIAのシンビアンやMicrosoftのWindowsMobileなど、ケータイアプリ開発ビジネスの全体像について。3章は日本でのiPhoneアプリ開発者の紹介。

で、個人的には4章が本書のキモだと思います。iPhoneとMacを買ってから、自作のアプリがAppStoreに並ぶまでの事務手続きの「勘どころ」が書かれています。税務書類の書き方(裏技含む)だとか、提出方法だとか、アプリのサポートページの用意の仕方だとか、プロモーションのするための小技だとか。。。

iPhoneアプリを開発して、AppStoreに並べたい!と思っている人は、とりあえず本書を読むと、「ビジネス上の事務手続き」の面でかなりの稼動削減になるかと思います。

さて、あとはMacとSDK解説本を買わないと・・・

| | コメント (2) | トラックバック (0)

2009年3月18日 (水)

Firebugを使ってみた

このブログ、左右の幅が狭いなーとつねづね思っていたので、ちょっと広げてみた。広げるに当たっては、実践 Web Standards Design でCSSについて勉強しつつ、便利と評判のFirebugでHTMLの構造を調査した。

で、ごらんのとおり70pxほど幅が広がっているのだけど、Firebugは評判なだけあってすごい!

Firebugをインストールすると、右下に虫のマークが表示されて、それをクリックすると、Firefoxの下半分がFirebugの画面になる(Ctrl+クリックなら別ウィンドウで開く)。左半分にHTMLがツリー構造で表示され、属性(タグ)をクリックするとそこに設定されているCSSのスタイルが継承関係を含めて右半分に表示される。また、メニューの「調査」をクリックしてから、ページにカーソルを合わせることで、ページの見た目からその位置の属性(タグ)が一発でわかる。CSSやHTMLは編集ができて、修正がどのように見た目に影響するかがすぐに分かる。そんな感じで、Firebugでページ内を調べた結果、幅を広げるにはstyles.cssで定義されている#containerのwidthプロパティと、#centerのwidthプロパティを大きくすればよいことが分かった。

なので、ココログのカスタムCSS機能で、↓なのを追加してみた。もともとの#containerや#centerは上書きできなくて、同じ属性が下のほうに追記されるらしく、後勝ちのルールに従って有効になるみたい。

/*** styles.cssの上書き修正 ***/
/* 大枠のdiv属性 */
#container {
    width:772px; /* オリジナルは702px */
}
/* 本文枠のdiv属性 */
#center {
    width:570px; /*オリジナルは500px */
}

最初、#containerの"#"の意味が分からなくて苦労した。おそらくIDセレクタ(一意セレクタ)のことで、id="container"の属性を指しているんだろうとは思ったのだけど、その前にあるはずの「属性名」がない。div属性を意味するのか、それとも属性名を気にしない(idで一意に定まるので)のかなぁと想像したのだけど、この例がIDセレクタの項目に載ってない・・・なぜだーと思ってググったら、ユニバーサルセレクタ(全称セレクタ)"*"が省略されている形らしい。ユニバーサルセレクタの項目を見たら確かに載っていた。

"*"の後に属性セレクタ、idセレクタ、擬似クラスを続ける場合は"*"を省略することができます。

知らんわ~。

| | コメント (2) | トラックバック (0)

2009年2月14日 (土)

2009/2/14は・・・

記念すべき日

2009年  2月 14日 土曜日 08:31:30 JST
time_t = 1234567890
Happy Valentine's Day!
[lucy@fedora7 ~]$

アホプログラムを書いてしまいました・・・

[lucy@fedora7 ~]$ cat ./happyValentine.sh
#!/bin/sh
while :
do
    date
    TIME_T=`date +%s`
    echo "time_t = $TIME_T"
    usleep 500000
    if [ $TIME_T = 1234567890 ]
    then
        echo "Happy Valentine's Day!"
        exit 0
    fi
    clear
done

| | コメント (1) | トラックバック (0)

2009年1月 2日 (金)

ミニマルPerl

あけましておめでとうございます。本年もよろしくお願いいたします。

僕がperlの本をはじめて買ったのは確かPerlハンドブックとかいうタイトルで、2000年くらいのことだった。 今は無き秋葉原ヤマギワの在庫処分かなにかで、100円だった気がする。 しかし結局ちょっと読んだだけではさっぱり身につかず、Perlは難しい、苦手だ、という印象だけが残った。 ハンドブックというタイトルからも伺えるように、初学者向けではなかったのかもしれない。

それからつい最近まで、Perlはいつか覚えたいと思いつつも、苦手だなぁと感じながら来たのだけれど、 昨年、他の人が書いたPerlのスクリプトを使う機会があったので、改めてPerlを勉強する気になった。

書店のコンピュータ本コーナーに行くと予想通りO'REILLYのPerl本が何冊も並んでいた。タイトルだけで選ぶと 「初めてのPerl」になるのかな、でもミニマルPerlの「ミニマル」も魅力的だな、流石に「プログラミングPerl(ラクダ本)」はつらいだろうなぁ。 うーん。

結局「まえがき」を読んで分りやすそうだった「ミニマルPerl」を購入したのだが、大正解だった。(「初めてのPerl」については分らないけれど) 2008年を通して、もっとも実践的でためになった本だと思う。

本書は、Unix/Linuxユーザにとって、実務で役に立つ必要十分な文法に絞って Perlを解説している本である。なので、本書だけでPerlの全てが分るわけではない(らしい)。 しかし、実践という意味では、非常に役に立つ。 grep,sed,awk,findといった標準的なコマンドと、その機能をperlで実現する場合の具体的なコードが書かれており、それが元のgrepなどのコマンドの解説にもなっていてすごい役に立つ。なので、僕としては「perlを中心とした、Unixコマンドによるシェルプログラミングの実践」 といった感じで、本書を読んだ。Linuxのコマンドライン上ですごすことが多い人。シェルスクリプトを書くことが多い人。特に僕みたいな、Perlってスクリプト言語として強力らしいけど、難しいんだよなーと思っている人には是非。

| | コメント (1) | トラックバック (0)