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


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

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

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/05/23 01:25:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

ぼくは、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 を使うしか、選択肢がありません。

他3件のコメントを見る
id:JULY

> 最近はpythonという選択肢も...

CentOS / RHEL だと、管理用のコマンドや GUI ツールが python なんで、これらを参考にして python で、というのはありだと思います。

# 故に、python をアンインストールしてはいけません。

個人的には、シェルスクリプト、Perl、C の順ですが(^^;

2012/05/16 09:40:00
id:DQNEO

なるほど、pythonという選択肢もあるんですね。

2012/05/16 10:37:24
id:pretaroe No.2

回答回数531ベストアンサー獲得回数75

ポイント100pt

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

質問の条件なら Perl

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

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

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

ない

id:DQNEO

ありがとうございます!
回答がはっきりしてていいですね!

2012/05/16 10:37:51
  • id:DQNEO
    なんでこんな質問をしたかというと、バッチ書くならbashだろうと思ってbashスクリプトを書き始めたのですが、正規表現マッチやコマンドオプションの解析などをやろうとするとちょっと面倒くさいということに気づきはじめたからです。
  • id:DQNEO
    前提の補足です。
    4.私はPerl好きです。
    5.扱うサーバは全てクラウドです。
  • id:DQNEO
    補足5:現場は4~5人のチームです。他のメンバーは、PerlもBashスクリプトも経験なし。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません