人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Linux(CentOS)上でちょっとした便利コマンドをこれからたくさん作ろうとしているのですが、Perlで書くかシェルスクリプト(bash)で書くか迷っています。

* どちらがおすすめでしょうか?
* メリット・デメリットについて詳しく教えてください。
* bashスクリプトにできて、Perlにできないことはありますか?

■前提条件
1.perlbrew使えます。CPANモジュールの導入は自由にできます。
2.CentOS(5 or 6)しか扱わないです。
3.私自身はPerlの方が得意です。Class::Accessorで簡単なクラスを作れるレベルです。

●質問者: DQNEO
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
●100ポイント

ぼくは、Perl があまり好きではありません(嫌いと言っても良い)。
あの、とってつけたような文法を覚えるのが、非常に苦痛です。
といったことを踏まえたうえでの回答です。

* どちらがおすすめでしょうか?

どっちでも良いと思います。
外部コマンドを呼びまくるような Perl スクリプトなら、bash で良いじゃん、とか思いますが、
Perl で書いちゃ駄目、な理由にはなりません。
Perl が得意ならば、積極的に bash を使うべき場面を思いつきません。

* メリット・デメリットについて詳しく教えてください。

システムの構築や、トラブル時に、テープや CD から OS をブートするときには、/usr/lib がマウントされていない
状況を考える必要があった時代もあったので、テープブートするときに必要なスクリプトは、
/bin に配置されているコマンドだけで書くべし(Perl は外れる)という時代もありました。
今どきは、そんなことを気にする時代じゃないと思います。
ま、その場合は、bash もアウトで、/bin/sh を使え、ということになるんですが。

* bashスクリプトにできて、Perlにできないことはありますか?

無いと思います。
テキストファイルの加工であれば、bash で sed やら awk を使った方が簡単に書ける
場面も多いと思いますが、Perl ではできない、ということではないです。


ぼく自身、必要に迫られなければ、Perl スクリプトを書きません。
正規表現やコマンドオプション程度なら、sed や getopts を使って書きますが、
どうにもならないのは、時刻を扱うとき。
現在時刻の一週間前の時刻が欲しい、とか、相対時刻を年月日時分で欲しい、とか、
そういったときには Perl に頼らざるを得ません。

プログラムをインストールして良い、と言われれば、Ruby をインストールしちゃいますが、
それを禁止されると、Perl を使うしか、選択肢がありません。


a-kuma3さんのコメント
Perl が好きな人に、嫌われちゃうなあ... でも、好きになれないのは、気持ちの問題だから、仕方ない。 Perl が得意な人にとっては、わざわざ bash を使う必要は無いかな、という気がします。 sh 系のスクリプトが読めないと、困ることがあるかもよ、という程度で、 両方使えるなら、Perl で良いと思います。

DQNEOさんのコメント
ありがとうございます! * Perl が得意なら、bash使う必要なし。 * bashにできてPerlにできないことはない。 * テープブートの時代はbashのメリットがあったが今はなし。 * bashを使うと、sh系スクリプトが読めるようになる。 * rubyという選択肢もあり。 大変参考になりました。 私はPerl好きなので、Perlの方がよさそうですね。

TransFreeBSDさんのコメント
最近はpythonという選択肢も... sh(たぶんbashも)の利点に軽い(起動が早い、メモリ消費が少ない)もありそうだけど、今時は誤差かもしれませんね。

JULYさんのコメント
> 最近はpythonという選択肢も... CentOS / RHEL だと、管理用のコマンドや GUI ツールが python なんで、これらを参考にして python で、というのはありだと思います。 # 故に、python をアンインストールしてはいけません。 個人的には、シェルスクリプト、Perl、C の順ですが(^^;

DQNEOさんのコメント
なるほど、pythonという選択肢もあるんですね。

2 ● pretaroe
●100ポイント

>* どちらがおすすめでしょうか?

質問の条件なら Perl

> メリット・デメリットについて詳しく教えてください。

Perlが入っていない環境がある
そういうのを意識する必要がない、関係ないのなら
デメリットはない。

> bashスクリプトにできて、Perlにできないことはありますか?

ない


DQNEOさんのコメント
ありがとうございます! 回答がはっきりしてていいですね!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ