Perl - user000422/0 GitHub Wiki

基本情報

インタプリタ型の言語処理系。 習得難易度の低い言語で、テキスト処理が得意。 CGIによく使われる。Movable Typeで使われる。

項目 リリース 備考
Perl 5.0 1994年
Perl 5.38 2023年 基本的に 5.3 をインストール
Perl 6 2015年 ★ Perl5とは互換性がない Perlとは別物

pl

最上部の #!/usr/bin/perl(シェバン行)は必須。

#!/usr/bin/perl

# strict 厳格モード Perlの文法チェックを厳しくするためのプラグマ
use strict;

# print 文字列はダブルクォーテーションで囲む
print("Hello!! \n");

■変数

# 変数
$sample_word = "Hello"; # 文字列
$sample_num = 100;      # 数値

# 配列
@sample_array = (10, 20, 30);
$result = $sample_array[0]; # 取得

# 連想配列
%sample_array = ("red" -> "赤", "blue" -> "青");
$result = $sample_array{"red"}; # 取得

■サブルーチン 定義済みの標準関数とは別で自由に定義する関数

sub sample_function {
    # shift 引数をまとめて取得
    my $sample = shift;

    # 引数を個別の変数で取得(引数の順番と変数の順番を意識すること)
    my ($sample_a, $sample_b) = @_;

    # 引数を取得(1つずつ)
    $tmp = $_[0];

    return $sample;
}

# サブルーチン呼び出し
&sample_function($sample_num);

■if

if ($sample_num == 100) {
    # TODO
} elsif ($sample_num == 200) {
    print("elsif");
} else {
    print("else");
}

# 文字列比較
if ($sample eq $test) {
    print("左辺と右辺は一致している。");
} elsif ($sample ne $test) {
    print("左辺と右辺は異なっている。");
}

# defined 定義判定 定義されていたらTRUE
if (defined $sample) { return }

■for

for ($i =0; $i < 10; $i++) {
    print($i . "週目"):
}

# 参考書外の記述(でも一般的?
# keyをループ
foreach $key (keys %sample_array) {
    print("%sample_array{$key}\n"); # valueを出力
}

■文字列操作

# 連結演算子 文字列を連結する
$result = "ABC" . "DEF";

# length 文字数を返却
$result = length($sample_word);

■配列操作

# sort 配列を昇順に並び替える
sort(@sample_array);

# grep 記述中

# join 記述中

■時間

# time と localtime を組み合わせて現在日時を出力
$totalsec = time;
($sec, $min, $hour, $day, $month, $year) = localtime($totalsec);

CGI

#!/usr/bin/perl

# package 名前空間
package Sample;

# リクエストパラメータの取得
$app->param('sample_id');

# BEGIN 
BEGIN{
  # pass
}