| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Perl 文法」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
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 正規表現}}
+
[[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 書式}}
+
[[Category:書式]]
 
  printf("%05d $line", $lin_num);
 
  printf("%05d $line", $lin_num);
  

2020年2月16日 (日) 04:30時点における最新版

Perl

Ruby |

コメント

  • 先頭に#をつける
  1. #comment

変数

  1. $age = 35; # $ではじめるとスカラ変数
  2. print "my age is $age \n"; # ダブルクォート文字列
  3. print 'my age is $age ' , "\n"; # シングルクォート文字列 変数展開されない
宣言 変数
$ スカラ
@ 配列
% ハッシュ

数値演算

算術演算
  1. $n1 = 2;
  2. $n2 = 10;
  3. print $n1 + $n2 , "\n"; # 加算
  4. print $n1 ** $n2 , "\n"; # べき乗
  5.  
文字列演算
  1. $n1 = 2;
  2. $n2 = 10;
  3. print $n1 , $n2 , "\n"; # 連結(,)
  4. print $n1 x $n2 , "\n"; # 繰り返し(x)
  5.  
論理演算
  1. $b1 = true;
  2. $b2 = false;
  3. print $b1 && $b2 , "\n"; # 論理積( and )
  4. print $b1 || $b2 , "\n"; # 論理和( or )
  5. # print !$b1 , "\n"; # 否定 ( not )
  6.  

配列

リスト配列
  1. @week = ("sum", "mon", "tue", "wed", "thu", "fri", "sat"); # 宣言
  2. print "$week[0] $week[1] $week[2] $week[3]\n"; # アクセス
  3. $week_cnt = @week;
  4. print "$week_cnt\n"; # 配列の個数
  5.  
操作 内容
push 配列の末尾へ要素を追加
pop 配列の末尾の要素を削除
unshift 配列の先頭へ要素を追加
shift 配列の先頭の要素を削除
reverse 配列の順序を逆順
sort 配列の順序をソート
マップ配列
  1. %eng_num = ("1", "one", "2", "two", "3", "tree");
  2. print "$eng_num{'1'}\n"; # 取得
  3.  
  4. %alpha = ( # 別の宣言方法
  5. "a" => "A",
  6. "b" => "B",
  7. "c" => "C"
  8. );
  9. print "$alpha{'b'}\n";
  10.  
  11. $lang{"1"} = "C"; # さらに別の宣言
  12. $lang{"2"} = "C++";
  13. $lang{"3"} = "Java";
  14. print "$lang{'3'}\n";
  15.  
操作 内容
keys すべてのキーを取り出す
values すべての値を取り出す
each 1組のキーと値を取り出す
delete 特定の要素を取り除く

eg.

  1. @alpha_keys = keys(%alpha);

制御

選択
  1. $cnd = 1;
  2.  
  3. if ($cnd == 1) {
  4. print "1";
  5. } elsif ($cnd == 2) { # elseif ぢゃない
  6. print "2";
  7. } else {
  8. print "else";
  9. }
  10.  
繰り返し

for

  1. for ($i=0; $i<5; $i++) {
  2. print "$i\n";
  3. }
  4.  

while

  1. $check = 0;
  2. while (true) {
  3. print "$check\n";
  4. if (++$check > 4) {
  5. last; # break ぢゃない
  6. }
  7. }

ファイル操作

読込
  1. open IN, "<c:\\test.txt";
  2. while ($line = <IN>) {
  3. print $line;
  4. }
  5. close IN;
  6.  
書出し
  1. open OUT, ">c:\out.txt";
  2. print OUT "Hello!";
  3. close OUT;

サブルーチン

  1. print add(5, 6);
  2.  
  3. sub add {
  4. ($n1, $n2) = @_; # パラメータの受取
  5. return ($n1 + $n2); # 戻値
  6. }
ローカル変数、My変数のスコープ
種類 スコープ
local 変数を宣言したサブルーチンから呼び出したサブルーチンでも参照できる。
my いわゆる自動変数。宣言したサブルーチンからのみ参照できる。

正規表現

  1. $s = "30/Jan/2007:02:39:34 +0900";
  2. # 一致 =~
  3. if ($s =~ /([0-9]{4}:[0-9]{2}:[0-9]{2})/) {
  4. print "$1\n";
  5. }
  6. # 不一致 !~
  7. if ($s !~ /abc/) {
  8. print "no match\n";
  9. }

{{include_html banner_html, "!RegExp"}}

書式

  1. printf("%05d $line", $lin_num);

型指定

記号 内容
s 文字列
d 整数
f 浮動小数点

フラグ

フラグ 内容
左詰め
0 左側を0埋め