Perl勉強してるメモ1

何故か最近Perlの勉強を始めた。

気になった箇所のまとめ、

■変数と型

・普通(単一)のデータはスカラー変数で扱う:$val = ‘Hello’;

・配列は「$」の代わりに「@」でも中の要素を扱う時は「$」でインデックスの指定は[]

:@array = (1,2,3,4,5); print $array[0] # 1

・ハッシュは「$」の代わりに「%」でも中の要素を扱う時は「$」で指定は{}

:%hash = (‘a’=>’1′,’b’=>’2’); print $hash{a} # 1

■変数スコープ

・{}ブロックでスコープは仕切られている。そのため変数はmyを使ってスコープを意識した変数宣言を

すると良いとされている。

・ファイルスコープは実は1ファイル1パッケージ的な扱いでパッケージスコープ。

・例えばファイル直下の位置で$cgi = CGI->new; とかやっておけば、subを呼ぶ時に毎回$cgiを

引数として渡す必要はない。

参考 Gist:https://gist.github.com/3855891

 

■リファレンス

・C言語で言うところのポインタ?配列やハッシュをサブルーチンに渡す際に変数のリファレンスを

渡す。そうしないと呼び出し先では1つの引数データに連結されてしまっているのでうまく復元できない。

・リファレンスで渡された値をsubスコープ内の新たな変数に入れてデリファレンスして編集すると、

元の変数の値が変わっている。デリファレンスした値を新たな変数に入れて編集した場合は影響しない。

参考Gist:https://gist.github.com/3850245

https://gist.github.com/3856617

 

■ファイルの扱いなど

・use IO=>’utf8′; としておくとUTF-8でファイルIOで扱う。

・ファイルハンドルはレキシカルスコープ変数を使うようにしましょう。

・またopen関数は3引数の形で使いましょう。

open(my $fh,’<‘,$file_path);

 

■モジュールについて

・use strict;と use warnings; はワンライナー(or実験)以外では必ずつけましょう。

・use feature ‘say’;とするとsay関数が使える。これはprint関数+改行らしい。便利。

・自作外部ファイル、PHPでいうところのrequire用ファイルのようなファイルは拡張子を

「.pm」にする。

 

■他

・qq や qw は便利なので積極的に使って行きましょう。

例:qq({name}”/>);

て感じで使える。

 

まぁ、こんな感じで。