Skip to content

Instantly share code, notes, and snippets.

@RyoSugimoto
Last active August 29, 2015 14:14
Show Gist options
  • Save RyoSugimoto/404d3e524339370d0690 to your computer and use it in GitHub Desktop.
Save RyoSugimoto/404d3e524339370d0690 to your computer and use it in GitHub Desktop.
Perlの基本的な文法。

Perl 基本

デバッグ

文書の先頭では、必ず以下の文を記述する。

use strict; # 厳しい文法チェック
use warnings; # 警告を表示

コメント

# この行ではこれ以降はコメントになる

変数の宣言

# スカラ変数: 一つの値
my $num;

# 配列変数: 複数の値
my @students

# ハッシュ変数: 複数のキーと値のペア
my %month_num;

文字列

  • シングルクオートかダブルクオートを用いて表す。

  • ダブルクオートの中には、特殊文字:\n(改行)や\t(タブ)を含むことができる。

  • ダブルクオートで囲まれた文字列の中では、変数が展開される。

  • 文字列の連結には.を使う。

    my $animal = 'dog';

    my $message = "I like $animal";

    変数展開され「I like dog」に

    my $message_2 = 'I like' . ' cat';

    「I like cat」

配列

my @nums;

# リスト形式で値を代入
@nums = (5, 10, 15);

添字を使った値の代入

Perlでは、1つの値を表現するときは、変数名の先頭が常に$になる。

# 変数の頭が「@」ではなく「$」になる
$nums[1] = 100;

qwを使った方法

my @strs = ("aaa", "bbb", "ccc");

my @strs = qw/aaa bbb ccc/;

繰り返し処理

foreach

配列の要素を順番に処理する。

#
foreach my $num (@nums) {
	# 繰り返しの処理
}

for / while

# for(初期値; 条件; 値の更新)
# @numsは配列の要素の個数
for (my $i = 0; $i < @nums; $i++) {
	# 繰り返しの処理
}

# while(繰り返し処理を行なう条件)
my $i = 0;
while ($i < @nums) {
	# 繰り返しの処理
	$++; # 値の更新
}

連想配列(ハッシュ)

my %scores;

%scores = (
	math => 55,
	english => 70,
	japanese => 100
);

keys関数ですべてのキーを取得できる。

# すべてのキーを取得
my $subjects = keys %scores;

sort関数で昇順に並べ替え

my subjects = sort keys %scores;

制御構文

if (条件1) {
	# 条件1が満たされている場合の処理
} elsif (条件2) {
	# 条件2が満たされている場合の処理
} else {
	# それ以外の場合の処理
}

比較演算子

数値比較演算子

演算子 意味
== 等しい
!= 等しくない
< より小さい
> より大きい
<= 以下
>= 以上

文字列比較演算子

演算子 意味
eq 等しい
ne 等しくない
lt より小さい
gt より大きい
le 以下
ge 以上

サブルーチン

関数のこと。

# 呼び出し
サブルーチン名(引数)

# 定義
sub 名前 {

	# 引数
	my @nums = @_;

	# 戻り値
	return 値;
}

open関数

# open ファイルハンドル, モード, ファイル名
open my $fh, '<', $file;

open関数は、失敗するとundef(未定義値)を返すので、or演算子でエラー処理を行なう。

# エラー処理
# メッセージを表示して終了させる
# 「$!」にはOSが返したエラーメッセージが含まれる
open my $fh, '<', $file
    or die "cannot open file \"$file\": $!"

その他

defined関数

変数の値が定義されているかチェックできる(宣言はされている必要がある)。

my $is_defined = defined $value;

引数の受け取り

  • 1つの引数を受け取るにはshift関数を使う。

  • shift関数は、配列の先頭の要素を取り出す関数。

  • コマンドライン引数: @ARGV

    my $file = shift;

    my $file = @ARGV;

複数の引数を受け取る

#
my @num = @ARGV;

#
my ($file, $type) = @ARGV;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment