perl

perl メモ(ファイル)

#!/usr/bin/perl use strict; use warnings; use 5.010; { open TXT, '>', 'out.txt'; say TXT "Hello, world1"; say TXT "Hello, world2"; close TXT; open my $fh, '<', 'out.txt' or die "Could not open out.txt: $!"; while (<$fh>) { print; # Hello, …

perl メモ(print 時の括弧の扱い)

#!/usr/bin/perl use strict; use warnings; use 5.010; { # 括弧の扱いに注意する # (1 + 2) のみが print の引数として処理され、"+ 4" が無意味な操作になってしまっている # 警告: print (...) interpreted as function # 警告: Useless use of addition…

perl メモ(state)

#!/usr/bin/perl use strict; use warnings; use 5.010; { # 1 増やす sub r1 { my $n = shift @_; $n += 1; } say r1(0); # 1 say r1(0); # 1 # 1 増やす(再初期化されない) sub r2 { state $n = shift @_; $n += 1; } say r2(0); # 1 say r2(0); # 2 } exi…

perl メモ(リファレンス)

#!/usr/bin/perl use strict; use warnings; use 5.010; { # リファレンス my $foo = "foo"; say $foo; # foo my $scalarref = \$foo; say $$scalarref; # foo my $ref = { A => "able", B => [1, 2, 3, 4, 5], }; say "$ref->{A}, @{$ref->{B}}[0..2]"; # a…

perl メモ(サブルーチン)

#!/usr/bin/perl use strict; use warnings; use 5.010; { # サブルーチン sub logger { my $args = shift; return $args; } say logger("sub"); # sub sub logger2 { if (@_ != 2) { say "error"; return; } my ($args, $args2) = @_; say "$args, $args2";…

perl メモ(三項演算子、短絡演算子)

#!/usr/bin/perl use strict; use warnings; use 5.010; { # 三項演算子 my $true = !! 1; my $false = !! 0; my $result = $true ? "first" : "second"; say $result; # first } { # 三項演算子の組み合わせ my $size = 15; my $result = ($size < 10) ? "s…

perl メモ(比較)

#!/usr/bin/perl use strict; use warnings; use 5.010; { # 比較 if ("a" lt "b") { say "a lt b"; # 辞書順 } if ("100" lt "99") { say "100 lt 99"; # 辞書順 } if (99 < 100) { say "99 < 100"; # 数値順 } } exit;

perl メモ(ブール)

#!/usr/bin/perl use strict; use warnings; use 5.010; { # 条件(0,'','0' は false) say 0 if 0; # 出力なし say '-' if ''; # 出力なし say 0 if '0'; # 出力なし # 条件(0,'','0' 以外は true) say 1 if 1; # 1 say 2 if 2; # 2 say '1' if '1'; # 1 say…

perl メモ(スカラー、配列、ハッシュ)

#!/usr/bin/perl use strict; use warnings; use 5.010; { # スカラー my $scalar = "scalar"; say $scalar; # scalar # 配列 my @array = ("arr1","arr2"); say @array; # arr1arr2 say "@array"; # arr1 arr2 # $#array は最大の添え字 say "$array[0], $a…