「Perl 文法」の版間の差分
ナビゲーションに移動
検索に移動
1行目: | 1行目: | ||
− | ==Perl== | + | ==[[Perl]]== |
[[Ruby]] | | [[Ruby]] | | ||
====コメント==== | ====コメント==== | ||
90行目: | 90行目: | ||
$lang{"1"} = "C"; # さらに別の宣言 | $lang{"1"} = "C"; # さらに別の宣言 | ||
$lang{"2"} = "C++"; | $lang{"2"} = "C++"; | ||
− | $lang{"3"} = "Java"; | + | $lang{"3"} = "[[Java]]"; |
print "$lang{'3'}\n"; | print "$lang{'3'}\n"; | ||
174行目: | 174行目: | ||
|- | |- | ||
|} | |} | ||
− | ====正規表現==== | + | ====[[正規表現]]==== |
− | + | [[Category:正規表現]] | |
$s = "30/Jan/2007:02:39:34 +0900"; | $s = "30/Jan/2007:02:39:34 +0900"; | ||
# 一致 =~ | # 一致 =~ | ||
185行目: | 185行目: | ||
print "no match\n"; | print "no match\n"; | ||
} | } | ||
− | {{include_html banner_html, "!RegExp"}} | + | {{include_html [[banner_html]], "!RegExp"}} |
====書式==== | ====書式==== | ||
− | + | [[Category:書式]] | |
printf("%05d $line", $lin_num); | printf("%05d $line", $lin_num); | ||
2020年2月16日 (日) 04:30時点における最新版
目次
Perl
Ruby |
コメント
- 先頭に#をつける
#comment
変数
$age = 35; # $ではじめるとスカラ変数 print "my age is $age \n"; # ダブルクォート文字列 print 'my age is $age ' , "\n"; # シングルクォート文字列 変数展開されない
宣言 | 変数 |
---|---|
$ | スカラ |
@ | 配列 |
% | ハッシュ |
数値演算
算術演算
$n1 = 2; $n2 = 10; print $n1 + $n2 , "\n"; # 加算 print $n1 ** $n2 , "\n"; # べき乗
文字列演算
$n1 = 2; $n2 = 10; print $n1 , $n2 , "\n"; # 連結(,) print $n1 x $n2 , "\n"; # 繰り返し(x)
論理演算
$b1 = true; $b2 = false; print $b1 && $b2 , "\n"; # 論理積( and ) print $b1 || $b2 , "\n"; # 論理和( or ) # print !$b1 , "\n"; # 否定 ( not )
配列
リスト配列
@week = ("sum", "mon", "tue", "wed", "thu", "fri", "sat"); # 宣言 print "$week[0] $week[1] $week[2] $week[3]\n"; # アクセス $week_cnt = @week; print "$week_cnt\n"; # 配列の個数
操作 | 内容 |
---|---|
push | 配列の末尾へ要素を追加 |
pop | 配列の末尾の要素を削除 |
unshift | 配列の先頭へ要素を追加 |
shift | 配列の先頭の要素を削除 |
reverse | 配列の順序を逆順 |
sort | 配列の順序をソート |
マップ配列
%eng_num = ("1", "one", "2", "two", "3", "tree"); print "$eng_num{'1'}\n"; # 取得 %alpha = ( # 別の宣言方法 "a" => "A", "b" => "B", "c" => "C" ); print "$alpha{'b'}\n"; $lang{"1"} = "C"; # さらに別の宣言 $lang{"2"} = "C++"; $lang{"3"} = "Java"; print "$lang{'3'}\n";
操作 | 内容 |
---|---|
keys | すべてのキーを取り出す |
values | すべての値を取り出す |
each | 1組のキーと値を取り出す |
delete | 特定の要素を取り除く |
eg.
@alpha_keys = keys(%alpha);
制御
選択
$cnd = 1; if ($cnd == 1) { print "1"; } elsif ($cnd == 2) { # elseif ぢゃない print "2"; } else { print "else"; }
繰り返し
for
for ($i=0; $i<5; $i++) { print "$i\n"; }
while
$check = 0; while (true) { print "$check\n"; if (++$check > 4) { last; # break ぢゃない } }
ファイル操作
読込
open IN, "<c:\\test.txt"; while ($line = <IN>) { print $line; } close IN;
書出し
open OUT, ">c:\out.txt"; print OUT "Hello!"; close OUT;
サブルーチン
print add(5, 6); sub add { ($n1, $n2) = @_; # パラメータの受取 return ($n1 + $n2); # 戻値 }
ローカル変数、My変数のスコープ
種類 | スコープ |
---|---|
local | 変数を宣言したサブルーチンから呼び出したサブルーチンでも参照できる。 |
my | いわゆる自動変数。宣言したサブルーチンからのみ参照できる。 |
正規表現
$s = "30/Jan/2007:02:39:34 +0900"; # 一致 =~ if ($s =~ /([0-9]{4}:[0-9]{2}:[0-9]{2})/) { print "$1\n"; } # 不一致 !~ if ($s !~ /abc/) { print "no match\n"; }
{{include_html banner_html, "!RegExp"}}
書式
printf("%05d $line", $lin_num);
型指定
記号 | 内容 |
---|---|
s | 文字列 |
d | 整数 |
f | 浮動小数点 |
フラグ
フラグ | 内容 |
---|---|
左詰め | |
0 | 左側を0埋め |
© 2006 矢木浩人