GNU/Linux >> Linux の 問題 >  >> Linux

知っておくべき8つの素晴らしいPerlコマンドライン引数

Perl のコマンド ライン オプションは、小さなタスクを効率的に実行するのに役立ちます。

この記事では、Perl コマンド ライン オプションを使用して次のタスクを実行する方法を確認します。

  • ファイルの内容を編集
  • ハンドル行区切り
  • 構文エラーをチェック
  • モジュールをロード
  • ループを実行する
  • Perl コードを実行する
  • 入力行区切りの設定
  • 入力行を分割
  • など

1. Perl -i オプション:ファイルの内容を編集

ファイルを 1 つずつ開き、コンテンツを STDOUT に置き換えます。

以下に示すように、次の sample.txt ファイルを使用して内容を大文字に変換してみましょう。

$ cat sample.txt
Practical Extraction Report Language

$ perl -pi  -e “tr/[a-z]/[A-Z]/” sample.txt

$ cat sample.txt
PRACTICAL EXTRACTION REPORT LANGUAGE

以下に示すように、元のファイルをバックアップすることもできます:

$ perl -pi.bak  -e “tr/[a-z]/[A-Z]/” sample.txt

$ cat sample.txt
PRACTICAL EXTRACTION REPORT LANGUAGE

$ cat sample.txt.bak
Practical Extraction Report Language

Perl プログラムをデバッグするには、前に説明したように Perl デバッガーを使用します。

2. Perl -l オプション:行区切りの処理

行区切りは、8 進数値を引数として取ります。以下は、いくつかの一般的な区切り記号の例であり、8 進値です。

Character    Octal Value
=========    =========
new line(\n) 012
tab(\t)      011
space        040
&            046

注 :すべての文字の 8 進数値を知るには、「man ascii」コマンドを使用してください。

行区切りの使用例:

$ perl -p -l046 -e “tr/[a-z]/[A-Z]/”;
bala

Output :

BALA&

また、追加情報として 6 つの Perl eval 関数も参照してください。

3. Perl -c オプション:構文エラーのチェック

オプション -c は、プログラムを実行せずにコンパイルして、プログラムに構文エラーがないことを確認します。

$ perl -c sample.pl

4. Perl -M オプション :モジュールのロード用

Perl -M オプションを使用すると、以下に示すように目的のモジュールをロードできます。

$ perl -MFile::Copy -e ‘move(“sample.txt”,”/tmp”);’

-m オプションもモジュールのロードを行いますが、何もインポートしません。違いは次のとおりです:

  • -MFile::Copy は、"use File::Copy; 「
  • -mFile::Copy は「use File::Copy()」に等しい

オプション -M については、以前の 20 のキラー Perl プログラミングのヒントでも説明しました。

5. Perl -n および -p オプション:暗黙のループ

オプション -n は、以下に示すようにコードをループ内にラップします。

while(<>) {
# perl code
}

次のスニペットは、これをよりよく説明しています。

while(<>) {
$_ =~ tr/[a-z]/[A-Z]/;
}

-n を使用すると、上記のコード スニペットを次のように書き換えることができます。

$ perl -n -e ‘tr/[a-z]/[A-Z]/;print’

オプション -p は、以下に示すようにコードをループ内にラップします。

while(<>) {
# perl code
print;
}

次のスニペットは、これをよりよく説明しています。

while(<>) {
$_ =~ tr/[a-z]/[A-Z]/;
print;
}

-p を使用すると、上記のコード スニペットを次のように書き換えることができます。

$ perl -p -e “tr/[a-z]/[A-Z]/”;

多くの Perl コードを開発する場合は、Perl のベスト プラクティス ブックを読む必要があります。

6. Perl -e オプション:コマンドライン自体で perl コードを実行

以下に示すように、このオプションを使用して、単純なまたは短い Perl プログラムをコマンド ライン自体に記述することができます。

$ perl -e “print \”Username : $ENV{USER}”

7. Perl -0 オプション:入力レコード区切り

オプション -0 を使用すると、以下に示すように、「入力レコード区切り文字」を改行から別のものに変更できます。

$ perl -p -0046 -e “tr/[a-z]/[A-Z]/”;
bala
raja&

Output :

BALA
RAJA&

上記の例では、046 は「&」文字の 8 進数値です。そのため、&文字を受け取った後、Perl はそれをレコードの終わりと見なし、変換操作を行います。

8. Perl -a オプション:入力行を分割

区切り文字をスペースとして、$_ を @F に分割します。

次の例は、オプション -a を示しています。

$ cat emp_salary.txt
bala     10000
rajesh  12300
kumar 14000

$ perl -n -l012  -a -e ‘print “$F[1]“‘  emp_salary.txt
10000
12300
14000

デフォルトでは、区切り文字としてスペースを取り、分割操作を行います。区切り文字は、以下に示すように -F オプションを使用して変更できます。

$ cat emp_salary.txt
bala:10000
rajesh:12300
kumar:14000

$ perl -n -l012  -F: -a -e ‘print “$F[1]“‘  emp_salary
10000
12300
14000

Linux
  1. 知っておくべき14の一般的なネットワークポート

  2. すべてのLinuxユーザーが知っておくべき10個のコマンド

  3. 知っておく必要のある10の基本的なLinuxコマンド

  1. Nagios:check_nrpe コマンドライン引数を有効にする方法

  2. 知っておくべき15のLinux Bash履歴拡張の例

  3. docker run へのコマンドライン引数

  1. 11Linuxコマンドラインガイドなしではいけない

  2. コマンドライン引数をBashスクリプトに渡しますか?

  3. コマンドラインからPerl/PHPスクリプトを実行する