1. ホーム
  2. スクリプト・コラム
  3. パール

perl チュートリアル perl チュートリアル集

2022-01-03 04:58:04

参考にしてください。 http://shouce.jb51.net/perl5/
サイト環境の設定。 https://www.jb51.net/article/74005.htm

Perlの基本構文 https://www.jb51.net/shouce/Perl.htm

前置き perlはもともと文字を扱うために設計されたもので、その強みの8割は文字を扱うことですが、もちろんそれ以外のことも可能です。現在では多くのWebページでもperlが使われており、通常はCGI環境を必要とします。例えば、$char =~ /language/とすると、"language"という言葉を含む文字列を検索することを意味します。また、unixやlinuxのシステム管理、ファイルの内容処理(awkやsedなどのツールをベースにしています)、その他やりたいことがたくさんできます。

I. Perlの環境設定

1. perlの取得
  Perlは通常、/usr/local/bin/perlまたは/usr/bin/perlに置かれています。インターネット上では、ftp://prep.ai.mit.edu/pub/gnu/perl-5.004.tar.gz のような匿名 FTP を使って、無料で入手することができます。

2. インストール方法は
      (1)解凍します。
      $gunzip perl-5.004.tar.gz
      $tar xvf - <perl-5.004.tar.gz
      (2)コンパイルします。
      make makefile
      (3) 配置する。
      コンパイルで生成された実行ファイルを、通常実行ファイルが置かれているディレクトリにコピーします(例)。
      $copy <compiled excutable file> /usr/local/bin/perl

3. 実行
  Perlのプログラムをテキストエディタで編集し、$chmod +x <program> と実行可能属性を追加すれば、$. /<program> と入力します。もし、システムが、 "/usr/local/bin/perl not found" と表示した場合は、正常にインストールされていませんので、再インストールしてください。
注意:プログラムの最初の行は、#!/usr/local/bin/perl(perlが置かれている場所)でなければなりません。

4 コメント
      コメントは、ステートメントを#という文字で開始することにより行います。
      # この行はコメントです
      注:プログラムを読みやすくするために、コメントを頻繁に使用することは良いプログラミングの習慣です。

II. 定数、変数、その他の問題

1. シングルクォートとダブルクォート
  二重引用符で囲まれた文字列では、簡単な変数置換が可能です。例えば、$text = "このテキストには数字$number."が含まれています。
  二重引用符で囲まれた文字列のエスケープ文字に対応しています。
  単引用符で囲まれた文字列と二重引用符で囲まれた文字列の違いは、変数置換がないことと、バックスラッシュがエスケープ文字に対応していないことの2点です。
2. 繰り返しと連結
繰り返し: print "t" x 5 (5つのtを出力する。注:xは小文字のx)
連結: $a.="bc" (等号連結と同等)
3. 単純な変数、配列、リスト
単純な変数: $ を使って宣言します。例: $a="hello";
配列:@で宣言、例:@arr=('a','b','c');
リスト リストは、括弧で囲まれた値の列で、任意の値または空にすることができます。例えば、(1, 5.3 , "hello" , 2)、空リストです。()

III. ファイル操作

1. ファイルを開く:例えば open (MYFILE, "file1") || die ("Could not open file"); MYFILE は宣言したファイルハンドル、file1 はファイル名/ファイルパス、コード行全体の意味は:オープンが失敗すると " Could not open file" と出力されます。
   ファイルを閉じます。ファイル操作が終了したら、close(MYFILE);でファイルを閉じます。
2. ファイルを読む
  文 $line = <MYFILE> は、ファイルから1行のデータを読み取り、単純変数 $line に格納し、ファイルポインタを1行後ろに移動します。 <STDIN> は、通常キーボード入力用の標準入力ファイルで、開く必要がありません。
  array = <MYFILE> というステートメントは、ファイルの内容全体を配列 @array に読み込み、ファイルの各行(復帰文字を含む)を @array の 1 要素とするものです。

#! /usr/bin/perl
open(MYFILE,'1.txt');
@arr = <MYFILE>;
print @arr;

3. ファイルの書き込み
  その形は
     open(OUTFILE, ">outfile") とします。
     print OUTFILE ("これは出力行です.˶‾‾‾˵);
  注)STDOUTとSTDERRは標準出力と標準エラーファイルであり、通常は

<テーブル 演算子 説明 -b ブロックデバイスであるか -c キャラクタデバイスであるかどうか -d ディレクトリかどうか -e が存在するか? -f 通常のファイルであるかどうか -g setgidビットが設定されているかどうか -k スティッキービットの設定の有無 -l シンボリックリンクかどうか -o ファイルを所有するかどうか -p パイプラインかどうか -r 読み取り可能かどうか -s 空でない -t 端末を表示するかどうか -u setuidビットが設定されているかどうか -w 書き込み可能かどうか -x 実行可能か -z ファイルが空かどうか -A 最後の訪問からどのくらいか -B バイナリファイルであるかどうか -C ファイルのinodeへの最後のアクセスからの経過時間 -M 最終修正からの経過時間 -O リアルユーザーのみが所有しています。 -R リアルユーザーしか読めないのか? -S ソケットかどうか -T テキストファイルかどうか -W リアルユーザーだけが書き込み可能か? -X リアルユーザーだけが実行可能です。 注:quot;real user"とは、ログイン時に指定されたユーザーIDのことであり、suidコマンドで変更可能な現在のプロセスのユーザーIDとは異なるものです。

 例
    unless (open(INFILE, "infile")){。
    die ("入力ファイル infile を開くことができません.╱)。
    }
    if (-e "アウトファイル"){。
    die ("出力ファイル outfile already exists.\n");
    }
    unless (open(OUTFILE, ">outfile")) {。
    die ("出力ファイルoutfileを開くことができません.✎);
    }
  に相当する。
    open(INFILE, "infile") && ! (-e "アウトファイル") &&
    open(OUTFILE, ">outfile") || die("Cannot open filesn").Open(OUTFILE, ">outfile");


IV. パターン・マッチング

1. 概念:パターンとは、文字列の中でバックスラッシュで囲まれた特定の文字列のことを指す。/def/ つまり、パターンdef.その使い方、例えば、文字列を特定のパターンで複数の単語に分割する関数splitを組み合わせて使う。array = split(/ /, $line)。
2. マッチ演算子 =~, ! ~
   =~ はマッチングが成功したかどうかをチェックします: $result = $var =~ /abc/; パターンが文字列の中に見つかった場合は0以外の値、真、マッチしなかった場合は0、偽を返します! ~ はその逆です。

V. 制御構造
(1)、条件判断:if()elseif()else();
(2)、Loop。
  1、 While ループ
  2、untilループ
  3、for ループ
  4. リスト(配列)の各要素に対するforeachループ

open(MYFILE,'1.txt');
@arr = <MYFILE>;
foreach $str (@arr){
 print $str;
}

  5. ループを行う
  6、ループ制御:ループの終了はlast、C言語のbreakと同じ、次のループの実行はnext、C言語のcontinueと同じ、PERL独自のコマンドにredoがあり、これはこのループを繰り返す、つまりループ変数は変更せずにループの最初に戻るという意味ですが、doループではredoコマンドは機能しないことに注意しましょう。
  7. 従来のgoto文:gotoラベル。
(3)、1行条件文
  構文は、文のキーワードcondexprです。キーワードには、if、unless、while、untilを使用できます。
    print ("This is zero.\n") if ($var == 0);
    print ("This is zero.\n") unless ($var ! = 0);
    print ("Not zero yet.\n") while ($var -- > 0)。
    print ("Not zero yet.\n") until ($var-- == 0);
    条件判断は後から記述しているが、先に実行されている。

VI. サブルーチン
(1)、定義
  サブルーチンは、特定のタスクを実行する独立したコード片で、コードの繰り返しを減らし、プログラムを読みやすくします。サブルーチンは、PERLではプログラムのどこにでも出現させることができます。定義されています。
  sub subroutine{
    ステートメントを使用します。
  }
(2)、コール
  呼び出し方法は以下の通りです:use & invoke
       &サブネームです。
       ...
       sub subname{
          ...
       }
VII. ファイルシステム : unixと密接な関係がある。 http://shouce.jb51.net/perl5/perl11.htm

OTHER
パイプライン:前の実行結果を後のパラメータとして使用することができる、例えば
env | grep EDITOR
環境変数からEDITORの値を削除することができます。