Hiro's program memo

プログラムに関するメモ書き。研究ではEmacsでPerlを書いてます。

乱数生成

特に特別な宣言はいらない。 $random_num = int (rand 10); rand x で0からxまで任意の小数を生成し、int型にして整数にしている。

配列に配列をpush

@a1 = (['あ','い','う','え','お'], ['か','き','く','け','こ']);@a2 = ('さ','し','す','せ','そ');push @a1,\@a2; #ここがポイントfor($i = 0; $i < scalar(@a1); $i++){ for($j = 0; $j < scalar(@{$a1[$i]}); $j++){ print $a1[$i][$j]." "; } print "…

配列をシャッフルする

use List::Util; ... @array = List::Util::shuffle @array;

配列を空にする

シンプルです。 @array = ();

メタ文字をエスケープさせる

オリジナルのテキストに?などのメタ文字があると正規表現を用いる時に不便。 なので自動的にエスケープさせると便利 $original = 'hello! What's your name?'; $escaped = quotemeta $original;

Emacsで指定の行の先頭に特定の文字を入れる

C-x r t をした後に指定文字を入力。 Perlで複数行に#を使ってコメントアウトする時に便利。

置換する時の注意

Perlで置換を用いる時はメタ文字に注意しなければならない。 例えば $word = 'Are you free tomorrow?'; $erase = '?'; $word =~ s/$erase//; #ハテナを消そうとする ただし、これだと'?'がメタ文字と認識され消えない。 $word =~ s/\Q$erase\E//; これで解…

ひらがな、カタカナの変換

Perlでよく使うのでメモ。エンコードの部分は"utf8","euc-jp"など自由に変更可。 (ただし真ん中のeucは変更しない) use Jcode; .... my $word = 'あかさたな'; $word = new Jcode($word,"utf8")->tr(map {new Jcode($_)->euc}('ぁ-ん','ァ-ン'))->utf8;