Perl:文法基礎

何度もプリント!

Perlをやっている人には常識なのだろうけど、初めて知って、びっくりした書き方。面白いなぁ、すごいなぁ。 おなじ文字を何度か連続してプリントしたい場合がある。 print "Hello, World! \n" x 3; ## >> Hello, World! ## Hello, World! ## Hello, World! …

文字コードについて調べてみた

研究室で文字コードについてWikiに書いておけ、と言われたので、文字コードについて調べてみた。 use encoding そのファイルは指定した文字コードで扱いますよ、という宣言をする。 例えば以下のようにすると、ファイルの保存の文字コードも、キーボードで入…

配列チェック

配列かどうかを調べる。Yahoo!WebAPIを使っていてエラーが出た。返り値が複数あると配列になるけど、一個だとスカラになるという迷惑なエラーです。調べた結果以下のコードで対応できそう。 if( ref($array) eq 'ARRAY' ){ print "配列!"; } else{ print "…

ハッシュ

時間が無いのでブクマのみ。 http://blog.livedoor.jp/dankogai/archives/50929096.html

全角数字を切り取る

全角文字は1字ずつばらして、文字コードで正規表現かけたほうが安全? 2バイト文字とか下手するとおかしな事になるからー。 $str = "てすと0"; $str =~ s/(?:\xA3[\xB0-\xB9])//og;

Perlの文字コードの指定:use encoding

エンコードの指定。 プログラムの最初に記述 use encoding "euc-jp"; # 標準入出力の文字コードは日本語EUC、スクリプトはEUCで記述 binmode STDERR, ":encoding(euc-jp)"; # 標準エラー出力も日本語EUCであつかうよー use open IO => ":encoding(euc-jp)"; …

正規表現:マッチしたものを配列に入れていく

正規表現にマッチしたものを配列に入れていく方法 今回は一文字ずつ文字を分解して配列に入れる my $ascii = '[\x00-\x7F]'; my $twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]'; my $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]'; my @char = $str =~ /$ascii|$tw…

Perlのプログラムを途中で強制終了させる

# 例.引数が足りないと強制終了 print "error" and exit if($#ARGV < 0);

コマンドライン上でプログラムを試す

$perl -e "プログラム"改行方法が分からん…。 一行プログラム。プリントしないとき。とか? 多分ちゃんとした使い方はあるんだろうな。 調べてみよう。

HASHを値でソートする

キーでソートするより便利なときもある b -> aだと降順 a -> bだと昇順 %hash; my @keys = sort{ $hash{$b} <=> $hash{$a} } keys %hash; # 数字じゃなくて文字列比較のときは # $hash{$a} cmp {$b}

Split:指定したパターンで切り取る

通常 $var = "one:two:three"; @list = split(/:/,$var); # @list = (one, two, three) LIMIT使用 $var = "one:two:three"; @list = split(/:/,$var,2); # 分割する回数の最大値を入力 # @list = (one, two:three) PATTERNにスペース @list = split(/ */,'a …

ファイルハンドル操作

特殊変数の$\で読み込みの範囲を指定できる