# ◆文字列から"b"の文字が最初に現れる位置(先頭が0)を得る
$a = "orange melon strawberry grape";
$n = index($a, "b");
# 18
print($n . "\n");
# ◆その位置から5文字を切り出す
# substrは開始位置、文字数で指定する
$b = substr($a, $n, 5);
# berry
print($b . "\n");
# ◆文字列の一部置き換え
$a =~ s/mel/lem/g;
print($a . "\n");
# ◆数値と文字列をそれぞれ加算、文字列連結する
$v1 = 10.2;
$v2 = "15.3";
# 25.5 10.215.3 25.5 15.310.2
$v3 = $v1 + $v2;
$v4 = $v1 . $v2;
$v5 = $v2 + $v1;
$v6 = $v2 . $v1;
print("$v3 $v4 $v5 $v6\n");
# ◆配列の3番目の要素から3個を取り出し、文字列に連結して出力する
@arr = ("orange", "melon", "strawberry", "grape", "apple", "banana");
@arrsub = @arr[2..4];
# strawberry graph apple
print(join(" ", @arrsub) . "\n");
# ◆要素の追加
push(@arr, "peach");
# ◆要素の検索
my($index) = grep { $arr[$_] =~ /peach/ } 0..$#arr;
print("index of 'peach' is:${index}\n");
# ◆配列要素を変数に一括代入する
my($e1, $e2, $e3) = @arrsub;
# strawberry graph apple
print("$e1 $e2 $e3\n");
%harr = ("orange"=>80, "melon"=>1200, "strawberry"=>350);
$harr{"grape"} = 450;
# ◆配列キーの存在有無をチェックする
# yes
print((exists($harr{"melon"}) ? "yes" : "no") . "\n");
# no
print((exists($harr{"lemon"}) ? "yes" : "no") . "\n");
# ◆配列キー一覧をソートして、キーと値を出力する
foreach $k (sort keys(%harr)){ print("${k}\t${harr{$k}}\n"); }
# ◆既定値付き引数を持つ関数を定義する
# Perlでは引数を省略すると空文字列として渡されるだけで、既定値の定義はできない
sub get_file_names{
my($dir, $ext) = @_;
@files = <${dir}/*${ext}>;
return @files;
}
print(join(" ", get_file_names(".")) . "\n");
print(join(" ", get_file_names(".", "txt")) . "\n");
# ◆可変長引数を持つ関数を定義する
sub get_sum{
my(@nums) = @_;
$sum = 0;
foreach $v (@nums){ $sum += $v; }
return $sum;
}
# 46
print(get_sum(10,11,12,13) . "\n");