Perl の仕組み

Perl は非常に単純で、広く知られ、高く評価されているスクリプト言語です。これはさまざまなタスクに使用されます (たとえば、DOS バッチ ファイルや C シェル スクリプトに相当するものを作成するために使用できます) が、Web 開発のコンテキストではCGI スクリプトの開発に使用されます。

Perl の良い点の 1 つは、Perl はスクリプト言語であるため、プログラムのソース コードを配布できることです。これにより、例によって Perl を学習する機会が得られ、また、何千もの Perl スクリプトをダウンロードして変更して独自に使用することもできます。 Perl の悪い点の 1 つは、この無料コードの多くが理解できないことです。 Perl は、信じられないほど難解なスタイルに向いています。

この記事は、読者がすでにプログラミング方法を知っていることを前提としています ( C プログラミング言語を知っている場合、これは特に簡単です)。 Perl は、基本を理解すれば簡単に使用できます。この記事では、最初から始めて、Perl を使用して最も一般的なプログラミング タスクを実行する方法を説明します。この記事を読み終える頃には、独自の Perl スクリプトを比較的簡単に作成できるようになり、他の人が作成した不可解なスクリプトも多少簡単に読めるようになりますが、これは良い出発点となります。

はじめる

Perl を始めるには、 Perl インタープリタが必要です。どの UNIX マシンにも、99.99% の確率ですでに存在しています。 Windows マシンまたは Mac では、言語の最新リリースをダウンロードしてマシンにインストールする必要があります。 (詳細については、この記事の最後にあるリンクを参照してください。) Perl は Web 上で広く入手可能であり、無料です。

次に、Perl に付属のDOCS ディレクトリを確認してください。そこにはユーザーマニュアルタイプのものが含まれています。ある時点で、ドキュメントをすべて読むか、少なくともざっと目を通してみても問題はありません。最初は面倒かもしれませんが、この記事を読むともっと理解できるようになります。

こんにちは世界

Perl をロードしたら、Perl 実行可能ファイルが含まれるようにパスが適切に設定されていることを確認してください。次に、テキスト エディタを開いてテキスト ファイルを作成します。ファイルに次の行を配置します。

 "Hello World!\n" を印刷します。

ファイルに「test1.pl」という名前を付けます。コマンド プロンプトで次のように入力します。

 perlテスト1.pl

Perl が実行され、テキスト ファイル内のコードが実行されます。 「Hello World!」という文字が表示されるはずです。 stdout (標準出力) に出力されます。ご覧のとおり、Perl でプログラムを作成して実行するのは非常に簡単です。 (UNIX を使用している場合は、最初の行に#! /usr/bin/perlのようなコメントを置くことができます。そうすれば、コマンド ラインで「perl」という単語を入力する必要がなくなります。)

printコマンドは、内容を標準出力に出力します。 \n表記は改行です。テスト プログラムを次のように変更すると、より明確になります ( # はコメントを示します)。

 # 2行に印刷
   "Hello\nWorld!\n" を印刷します。

print コマンドは、「\n」をリテラル文字ではなく改行として解釈する必要があることを理解していることに注意してください。この解釈は、print コマンドのせいではなく、二重引用符の使用 (Perl では引用符と呼ばれる慣行) のせいで発生しました。代わりに一重引用符を使用すると、次のようになります。

 'Hello\nWorld!\n' を印刷します。

\n 文字は解釈されず、文字通りに使用されます。

逆引用符文字`もあります。これらのペアは、引用符内にあるものをオペレーティング システムコマンドとして解釈し、そのコマンドを実行してコマンドの出力を出力する必要があることを意味します。逆引用符の中にオペレーティング システムからのコマンド ライン操作を配置すると、その操作が実行されます。たとえば、Windows NT では次のように言えます。

 print `cmd /c dir`;

DIR コマンドを実行すると、現在のディレクトリのファイルのリストが表示されます。

正規表現を引用するために使用される/文字も表示されます。

print コマンドは、カンマを区切り文字として認識します。例えば:

 print 'hello', "\n", 'world!';

ただし、ピリオドも表示されます。

 「こんにちは」を印刷します。 「\n」。 '世界!';

ピリオドは実際には文字列連結演算子です。

C の人向けのprintf演算子もあります。

PERL に関する注意事項

Windows NTでは、次のようなことは言えません。

 `ディレクトリ`を印刷します。

dir は別個の実行可能ファイルではなく、コマンド インタープリタ cmd の一部であるためです。 「cmd /?」と入力します。詳細については、DOS プロンプトで確認してください。

変数

Perl では変数が興味深いです。これらを宣言するのではなく、常に$ を使用してそれらを示します。それらは最初の使用時に存在します。例えば:

 $s = "Hello\nWorld\n";
   $t = 'Hello\nWorld\n';
   $s、"\n"、$t を出力します。

または:

 $i = 5;
   $j = $i + 5;
   print $i, "\t", $i + 1, "\t", $j; # \t = タブ

または:

 $a = "こんにちは ";
   $b = "ワールド\n";
   $c = $a 。 $b; # の使用に注意してください。文字列を連結する
   $c を出力します。

以来は文字列の連結であり、.= は C の “+=” と同じように期待どおりの意味を持ちます。したがって、次のように言えます。

 $a = "こんにちは ";
   $b = "ワールド\n";
   $a .= $b;
   $a を出力します。

配列を作成することもできます。

 @a = ('猫', '犬', 'うなぎ');
   print @a, "\n";
   $#a, "\n" を出力します。 # ゼロから始まる最高のインデックスの値
   print $a[0], "\n";
   print $a[0], $a[1], $a[2], "\n";

$#表記は、配列内の最大のインデックスを取得します。これは、配列内の要素数から 1 を引いたものに相当します。C と同様、すべての配列のインデックスは 0 から始まります。

ハッシュを作成することもできます。

 %h = ('犬', '樹皮', '猫', 'ニャー', 'ウナギ', 'ザップ');
   print "犬はこう言う, $h{'dog'};

ここでは、「吠え声」は「犬」、「ニャー」は「猫」という単語と関連付けられます。同じ宣言のより表現力豊かな構文は次のとおりです。

 %h = (
      犬 => 「吠える」、
      猫 => 「ニャー」、
      うなぎ => 'ザップ'
   );

=>演算子は、左側の文字列を引用符で囲み、コンマとして機能します。

ループとIF

C で行うのと同じように、単純なforループを作成できます。

 for ($i = 0; $i < 10; $i++)
   {
      $i, "\n" を出力します。
   }

ステートメントは簡単です

 $i = 0;
   while ( $i < 10 )
   {
      $i, "\n" を出力します。
      $i++;
   }

ifステートメントも同様に簡単です。

 for ($i = 0; $i < 10; $i++)
   {
      if ($i != 5)
      {
         $i, "\n" を出力します。
      }
   }

ブール演算子はC と同じように機能します。

  • &&そして
  • ||または
  • ない

数字の場合:

  • ==等しい
  • !=等しくない
  • <<=>>= (予想どおり)

その他:

  • 等価
  • それ
  • GT

配列がある場合は、 foreachを使用して簡単にループできます。

 @a = ('犬', '猫', 'うなぎ');
   foreach $b (@a)
   {
      $b, "\n" を出力します。
   }

Foreach は、配列 @a の各要素を取得し、@a が使い果たされるまで $b に配置します。

PERL に関する注意事項

単一行であっても、「開始」中括弧と「終了」中括弧{}を使用する必要があります。

機能

subという単語を使用してサブルーチンを作成します。サブルーチンに渡されるすべての変数は、 _という配列に格納されます。したがって、次のコードは機能します。

 show ('猫', '犬', 'うなぎ');

   サブショー
   {
      for ($i = 0; $i <= $#_; $i++)
      {
         print $_[$i], "\n";
      }
   }

$# は配列内の最大のインデックス (要素の数から 1 を引いたもの) を返すので、 $#_ はパラメーターの数から 1 を引いたものになることに注意してください。そのような鈍さが好きなら、PERL を気に入るはずです。

次のように、 localという単語を使用してサブルーチン内でローカル変数を宣言できます。

 サブxxx
   {
      ローカル ($a、$b、$c)
      ...
   }

次のように& を使用して関数を呼び出すこともできます。

 &show ('a', 'b', 'c');

& 記号はあいまいさがある場合にのみ必要ですが、プログラマによっては常に使用する場合があります。

サブルーチンから値を返すには、キーワードreturnを使用します。

読む

STDINからの読み取り

stdin (標準入力) からデータを読み取るには、 STDINハンドルを使用します。例えば:

 print "大きな数値を入力してください: ";
   $i = <STDIN>;
   for ($j = 0; $j <= $i; $j++)
   {
      $j, "\n" を出力します。
   }

整数を入力する限り、このプログラムは期待どおりに動作します。 <STDIN> は一度に 1 行ずつ読み取ります。次のようにgetc を使用して 1文字を読み取ることもできます。

 $i = getc(STDIN);

または、読み取りを使用します。

 read(STDIN, $i, 1);

読み取りコマンドの 3 番目のパラメーターの 1 は、読み取る入力の長さです。

環境変数の読み取り

PERL はENVという名前のグローバル ハッシュを定義しており、それを使用して環境変数の値を取得できます。例えば:

 $ENV{'PATH'} を印刷します。

コマンドライン引数の読み取り

PERL は、スクリプトに渡されるコマンド ライン引数を含むグローバル配列ARGV を定義します。 $#ARGV は渡される引数の数から 1 を引いたもの、$ARGV[0] は渡される最初の引数、$ARGV[1] は 2 番目というようになります。

これで、簡単な Perl スクリプトの読み書きができるようになります。また、完全なドキュメントを参照して詳細を確認することもできます。詳細については、次のページのリンクを参照してください。

PERL に関する注意事項

環境変数の名前は大文字である必要があります。