perlの文法2

perlの文法2

「use strict」

perlを書くときに推奨されている書き方。
メリットとしてはバグが減る。
(例えば変数宣言にはmyが必須になったり。)
、「スコープ (関数) 内でのみ有効な変数宣言」 をつけるべし!

「use Warning」

初期化されていない変数を使用した場合、警告してくれる。

「サブルーチン」

sub func{
	print "引数は".$_[0]."".$_[1]."\n";
}

$func(1,"AAA");
#引数は1 AAA

「shift」

shiftは配列の先頭の要素を取り出します。

★一般的なshift

my @city = ("tokyo","osaka");
my $val = shift($city);
print @val; //tokyo

★サブルーチン内でのshift
sub内では@_がデフォルトの引数となる。

subx(4000);

sub subx{
	my $test = shift;
	print $test; //4000
}

「chomp」

「chomp」関数は対象の文字列の末尾の改行文字を削除します。

[foreach]

構文: foreach 変数(リスト){}

「split」

my $txt = "this is a pen";
my @list = split(/ /,$txt);
foreach my $parts(@list){
	print $parts;
}
#this
#is
#a
#pen

「Data::Dumper」

データダンパーは、データ構造をダンプする為に使用します。

my $var = {
	LLs => [qw/php ruby perl],
	perl = > 'perl-mongers';	
};

warn Dumper($var);

#$VAR1 = {
#	'perl' => 'perl-mongets',
#	'LLs' => [
#		'php','ruby','perl'
#		]
#
#};

[qw]

配列の初期化で使用

('AA','BB','CC')

qw/AA BB CC/

は同じ。下記のような配列で使用。

my @city = qw/tokyo osaka nagoya/;
for(my $i=0;$i<3;$i++){
	print "$city[$i]\n"
}

[Data::Dumperの$Data::Dumper::Useperl = 1; ]
Data::Dumperの中でUTF8フラグのついているデータがエスケープ
されて文字化け状態になってしまうので、UTF8の日本語を使用する場合には必ず設定。



[qq]

qq//でダブルクォートで囲った文字列と同じ意味を表現できる。

my $txt = qq/Not found "$file"/;

変わりに
qq() qq{} qq## qq[] qq!!などが使用できまふ。

[引数の渡し方]
my ($aa,$bb,cc) = &_rtnResponse;

sub _rtnResponse {
  my %responses = (aa=>111,bb=>222,cc=>333);
  return %responses;
}
[mysql]
use DBI;
use Readonly;

#データベースの接続先を指定

Readonly my $datasources => [ 'dbi:mysql:apparelclip:182.48.40.66', 'testuser','ogtfu2ec'];


sub get_entries {
    my $dbh = DBI->connect( @{$datasources},
        { RootClass => "DBIx::ContextualFetch" } )
        or die $DBI::errstr;
    my $sql   = qq{SELECT * FROM clip_bookmark where data_acquire_date >= '2010-01-01' };
    my $sth   = $dbh->prepare($sql);
    $sth->execute;
    my $entries = $sth->fetchall_hash;
    $sth->finish;
    $dbh->disconnect;
    return $entries;
}