Perl基本構文2022の最速のマスター


この記事はPerlの基本的な要約ですsyntax 2022 Perlをすばやく学ぶこと.
原物はThe Fastest Master of Perl Basic Synta | Perl ABC

Perlの基本構文


構文チェック


必ず次の2行を書いてください.
use strict;
use warnings;
use strict 構文チェックを厳しくします.
use warnings エラーを防ぐ警告を表示します.

印刷機能


The print function 文字列を標準出力に出力します.
print "Hello world";

コメント


Perlのcomment .
# comment

変数宣言


The my キーワード宣言variable .
# Scalar variables
my $num;

# Array variables
my @students

# Hash variables
my %month_num;

Perlプログラムの実行


PerlコマンドはPerlプログラムを実行します.
perl script.pl
出力をファイルに出力する場合はリダイレクトを使用できます.
perl script.pl > file.txt
これらは以下のようにして行われます.
  • Command Prompt on Windows
  • シェルのMAC/Linux/UNIX
  • コンパイルチェック


    スクリプトを実行せずにコンパイルチェックのみを行うことができます.
    perl -c script.pl
    

    Perlデバッガ


    Perlはdebugger . デバッガを起動するには、Perlコマンドで- dオプションを使用します.
    perl -d script.pl
    



    スカラー変数に数値を割り当てることができます.数は整数または浮動小数点数である.
    my $num = 1;
    my $num = 1.234;
    
    数字が大きい場合、アンダースコアは区切り記号として使用できます.
    my $num = 100_000_000;
    
    ソースコードで書かれた番号をnumeric literals .

    算術演算


    これらは基本ですarithmetic operations .
    # Addition
    $num = 1 + 1;
    
    # Subtruction
    $num = 1 - 1;
    
    # Multiplication
    $num = 1 * 2;
    
    # Division
    $num = 1 / 2;
    
    商をculculateして除算を行って、整数部分をint function .
    # Quotient
    $quo = int(3 / 2);
    
    %演算子は剰余を計算します.
    # Remainder
    $mod = 3 % 2;
    

    増加と減少


    Increment and Decrement .
    # Increment
    $i++
    
    # Decrement
    $i--
    


    単一引用文字列


    これはsingle quoted string . スカラー変数に割り当てることができます.
    my $str1 = 'abc';
    

    ダブル引用文字列


    これはdouble quoted string . スカラー変数に割り当てることができます.ダブルクォート文字列では、\t ( TAB ),\n (改行)などのエスケープシーケンスを使用できます.
    my $str2 = "def";
    my $str3 = "a\tbc\n";
    
    ダブルクォート文字列で変数展開を使用することもできます.
    # Variable expansion - The result is "abc def"
    my $str4 = "$str1 def";
    

    文字列演算子と関数


    よく使われる文字列operators and functions .
  • String Concatnation Operator
  • join Function
  • split Function
  • length Function
  • substr Function
  • index Function
  • 例:
    # Concat two strings
    my $join1 = 'aaa' . ' Bbb';
    
    # Concat strings with a delimiter
    my $join2 = join(',','aaa', 'bbb', 'ccc');
    
    # Split
    my @record = split(/,/, 'aaa,bbb,ccc');
    
    # Length
    my $length = length 'abcdef';
    
    # Cut - The result is "ab"
    my $substr = substr('abcd', 0, 2);
    
    # Search - Returns the found position, otherwise returns -1
    my $result = index('abcd', 'cd');
    

    アレイ


    Perlの説明arrays . 配列は複数の値を持つデータ構造体です.

    配列宣言


    これは配列宣言と代入です.エーlist 配列に割り当てることができます.
    # Array declarations
    my @array;
    
    # Assignment to the array
    @array = (1, 2, 3);
    

    配列の要素の取得と設定


    配列の要素を設定して取得します.
    # Get an element of the array
    $array[0];
    $array[1];
    
    # Set an element of the array
    $array[0] = 1;
    $array[1] = 2;
    

    配列の長さ。


    配列の長さを取得するには、配列をスカラコンテキストで評価することで、配列の長さを取得できます.
    # Get the legnth of the array
    my $array_length = @array;
    

    配列関数


    よく使われる配列functions .
    # Cut off the first element
    my $first = shift @array;
    
    # Add an element at the beginning of the array
    unshift @array, 5;
    
    # Cut off the last element
    my $last = pop @array;
    
    # Add an element at the end of the array
    push @array, 9;
    

    ハッシュ


    Perlの説明hashes . ハッシュはキー値ペアを持つデータ構造体です.

    ハッシュ宣言


    これはハッシュ宣言です.エーlist ハッシュに割り当てることができます.
    # Hash declaration
    my %hash;
    
    # Assignment values to the hash
    %hash = (a => 1, b => 2);
    

    ハッシュ値の取得と設定


    ハッシュの値を取得して設定します.
    # Get a value of the hash
    $hash{a};
    $hash{b};
    
    # Set a value of the hash
    $hash{a} = 5;
    $hash{b} = 7;
    
    ハッシュのキーが「A - ZA - Z 0 - 9」で構成されていないなら、それは1つまたは二重引用符で囲まれなければなりません.
    $hash{'some-key'} = 5;
    

    ハッシュ関数


    よく使われるハッシュfunctions .
    # Get all keys
    my @keys = keys %hash;
    
    # Get all values
    my @values = values %hash;
    
    # Check if the key exists
    exists $hash{a};
    
    # Delete a key of the hash
    delete $hash{a};
    

    条件分岐


    条件分岐を説明する.

    if文


    条件分岐の場合は、if statements .
    if ($condition) {
      # If the condition is ture, the statements in this block are executed.
    }
    

    他ならば


    if else else文です.
    if ($condition) {
      # If the condition is ture, the statements in this block are executed.
    }
    else {
      # If the condition is false, the statements in this block are executed.
    }
    

    を返します。


    if ELSIFステートメントです.
    if ($condition1) {
      # If the condition 1 is ture, the statements in this block are executed.
    }
    elsif ($condition1) {
      # If the condition 2 is ture, the statements in this block are executed.
    }
    

    比較演算子


    Perlのリストcomparison operators . Perlは数値比較演算子と文字列比較演算子を持ちます.
    数値比較演算子
    数値比較は数値として値を比較します.
    演算子
    意味
    $ x == $ y
    $ xは$ y
    $ x != $Y
    $ xは$ y
    $ x <$ y
    $ xは$ y未満です
    $ x>$ y
    $ xは$ yより大きいです
    $ x <= $ y
    $ xは$ y以下です
    $ x > = $ y
    $ xは$ y以上です
    文字列比較演算子
    文字列比較演算子は値を文字列と比較します.値を辞書順と比較します.
    演算子
    意味
    $ x eq $ y
    $ xは$ y
    $ x ne $ y
    $ xは$ y
    $ x lt $ y
    $ xは$ y未満です
    $$ gt $ y
    $ xは$ yより大きいです
    $$ le $ y
    $ xは$ y以下です
    x x y y
    $ xは$ y以上です

    ループ構文


    説明loop syntax such as while/for .

    while文


    これはwhile 文.
    my $i = 0;
    while ($i < 5) {
    
        # Do something
    
        $i++;
    }
    

    for文


    これはfor 文.
    for (my $i = 0; $i < 5; $i++) {
      # Do something
    }
    

    foreachステートメント


    これはforeach ステートメントを配列の各要素を反復します.
    foreach my $num (@nums) {
      # Do something
    }
    
    Perlではforeachステートメントはfor文のエイリアスです.
    # Same as the above foreach statement
    for my $num (@nums) {
      # Do something
    }
    

    サブルーチン


    説明するsubroutines .

    サブルーチン定義


    これはサブルーチン定義です.サブルーチンは引数を受け取り、文を実行し、返り値を返します.
    sub sum {
      # Revices arguments
      my ($num1, $num2) = @_;
    
      # Execute the statements
      my $total = $num1 + $num2;
    
      # Return the return values
      return $total;
    }
    

    サブルーチンの呼び出し


    サブルーチンを呼び出します.
    # Call a subroutine
    my $sum = sum(1, 2);
    

    ファイル入出力


    説明file Input/Output .
    # Open file
    open my $fh, '<', $file
      or die "Cannot open'$file':$!";
    
    while (my $line = <$fh>) {
      ...
    }
    
    close $fh;
    
    The open function ファイルをオープンします.“<”は読み出しモードを意味する.
    < $ fh >はline input operator .
    $ !はpredefined variable を返します.

    よく使われる機能


    Perlでよく使われる機能について説明します.

    Perl trueとfalse値


    説明Perl true and false values .

    偽の値


    これらはPerlで偽の値です.
  • ウンデフ
  • 0
  • 「」
  • "0 "
  • (
  • 真の値


    真の値は上記の偽値以外のすべての値です.

    定義された関数


    The defined function 値が定義されているかどうかを調べます.
    defined $num;
    

    コマンドライン引数


    @ argvはcommand line arguments .
    my ($args0, $args1, $args2) = @ARGV;
    

    スカラーコンテキストとリストコンテキスト


    Perlはcontext を返します.
    これらは、戻り値がスカラーコンテキストとリストコンテキストに対応して異なる例です.
    # Scalar context
    my $time_str = localtime();
    
    # List contex
    my @datetime = localtime();
    

    無条件文


    Perlはunless statement .
    unless ($condition) {
      ...
    }
    
    上記の場合は、以下のif文と同じです.
    if (!$condition) {
      ...
    }
    

    Postfix if , postfixを指定しない限り


    PerlはPostfix ifステートメントとPostfixステートメントを使用しません.
    # Postfix if
    print $num if $num > 3;
    
    # Postfix unless
    die "error" unless $num;
    

    ポストフィックス


    perはステートメントのPostfixを持っています.
    # Postfix for
    print $_ for @nums;
    
    配列の各要素は$ 20.0に割り当てられます.
    $は呼ばれますdefault variables

    スライススライスとハッシュスライス


    Perlはarray slices and hash slices 指定した要素を取得する構文.
    # Array slice
    my @select = @array[1, 4, 5];
    
    # Hash slice
    my @select = @hash{'a', 'b', 'd'};
    

    マップ関数


    Perlはmap function 配列の各要素を処理する.それぞれの要素は$ $に割り当てられます.
    my @mapped = map {$_ * 2} @array;
    
    マップfuntionの上記の結果は、ステートメントの次の結果と同じです.
    my @mapped;
    for my $elem (@array) {
      my $new_elem = $elem * 2;
      push @mapped, $new_elem;
    }
    

    GRP関数


    Perlはgrep function 条件が一致する要素を取得します.それぞれの要素は$ $に割り当てられます.
    my @select = grep {$_ =~ /cat/} @array;
    
    grep関数の上記の結果は、ステートメントの次の結果と同じです.
    my @select;
    for my $elem (@array) {
      if ($elem =~ /cat/) {
        push @select, $elem;
      }
    }
    

    リスト割り当て


    これはlist 代入.
    # List assignment
    my ($num1, $num2) = ($num3, $num4);
    

    範囲演算子


    The range operator 整数の範囲を持つリストを作成します.
    # Range operator
    my @numes = (0 .. 5);
    
    これは次のコードと同じです.
    my @numes = (0, 1, 2, 3, 4, 5);
    

    文字列リスト演算子


    Perlはstring list operator 簡単に文字列リストを作成します.
    # String list operator
    my @strs = qw(aaa bbb ccc);
    
    これは次のコードと同じです.
    my @strs = ('aaa', 'bbb',  'ccc');
    

    操作がない状態を返す


    オペランドリターンを持たないリターンステータスundef スカラコンテキストで、リストコンテキストの空のリストを返します.
    sub foo {
    
      return;
    }
    
    # undef
    my $ret = foo();
    
    # ()
    my @ret = foo();
    

    例外処理


    The die function 例外をスローします.
    # Throw an exception
    die "Error message";
    
    The eval block 例外をキャッチ.例外が発生した場合、例外メッセージは定義済み変数“$@”にアサーションされます.
    # Catch exceptions
    eval {
      # Do something
    };
    
    # The exception message
    if ($@) {
      ...
    }
    

    ファイルからコンテンツ全体を読み込む


    To read whole content from a file , 次の構文を使用できます.
    # Read whole content from a file
    my $content = do { local $/; <$fh> };
    

    三項演算子


    PerlはTernary operator .
    # Ternary operator
    my $num = $flag ? 1 : 2;
    

    宗度=


    Perlは特別な代入演算子“Count”を持ちます.
    $num ||= 2;
    
    これは次のコードと同じです.
    $num = $num || 2;
    

    //


    Perlはdefined-or operator と特別な代入演算子.
    $num //= 2;
    
    これは次のコードと同じです.
    $num = $num // 2;
    

    モジュール読み込み


    The use 関数の読み込みmodule .
    use SomeModule;
    

    設定ファイルを


    The do function Perlで書かれた設定ファイルを読んでください.
    use FindBind;
    my $conf_file = "$FindBin::Bin/app.conf";
    my $conf = do $conf_file
      or die "Can't load config file \"$conf_file\":$! $@";
    
    設定ファイルの例
    {
      name =>'Foo',
      number => 9
    }
    

    複数行コメント


    Perlは複数行コメントの構文を持っていませんがPOD 複数行コメントを書く構文.
    =pod
    
    Comment1
    
    Comment2
    
    Comment3
    
    =cut