FC2ブログ

無窮 i ラボ Blog

知的ネット社会、知そのもの、機械との共生、プログラミングに関して。

 
 

sub Hogehoge {

my $sTextReg = '([^a-zA-Z0-9_])'.$sText.
'([^a-zA-Z0-9_]|$)'
; # "を使わず、'を使う


if ( $dummy2 =~ /$sTextReg/ ) {
$index_point = index($dummy2, $1.$sText.$2, 0) + 1;
}

return (0);

}
 このエントリーをはてなブックマークする このエントリーを含むはてなブックマーク
2000年~2099年の間、有効。細かいことは気にしない。

sub getDatefromString {
# 文字列の中に含まれる日付情報を取得する
# 変数・配列 ---
my ($str) = @_;
my $out;
# /-------------
if ($str =~ /20(\d{2}).*?(\d{2}).*?(\d{2})/i) {
$out = '20'.$1.'/'.$2.'/'.$3;
} else {
$out ='';
}
return ($out);
}
 このエントリーをはてなブックマークする このエントリーを含むはてなブックマーク
Abstract: Call by reference in Perl.

送信側:
\@Array, \$var, \%hash, \&method

受信側:
*Array, *var (ただし、サブルーチン中での宣言は my ではなく local )
あるいは
@{ } ${ }

call送信、sub受信の場合、引数もcallする側に返される(場合がある?)ので注意。それが不都合ならば、callする前にコピーをとればいい。

例:

&Method_A(\@Array, \$Var);

*Array = &Method_B();
@Array = @{&Method_B()};

sub Method_A {
my ( $Array_ref, $Var_ref ) = @_;
my @Array = @{$Array_ref};
my $Var = ${$Var_ref};
...
return (0);
}

sub Method_B {
return ( \@Array );
}
 このエントリーをはてなブックマークする このエントリーを含むはてなブックマーク
Abstract: a multi-dimensional array in Perl.

Perlで2次元配列などの複数次元配列を使う方法:

2次元配列( Array(i,j) | i=(0,…,i_max), j=(0,…,j_max) )を例にして説明します。

● 宣言:

@Array = ([],[]);

● 複数次元配列の中間配列 ( Array(i,*) ):

@{$Array[$i]}

中間配列の要素の最終インデックス(j_max)が欲しければ、

$#{$Array[$i]}

なお、$#Array とすれば、i_max が得られる。
 このエントリーをはてなブックマークする このエントリーを含むはてなブックマーク
Abstract: How to use an element of an array made by a method.

以下のような書き方をしてOK。

( split(/[正規表現]/, $str) )[1]

応用編 (2011/ 5/ 1追記):

( split(/\//, $url) )[ $#{ ( split(/\//, $url) ) } ]

 このエントリーをはてなブックマークする このエントリーを含むはてなブックマーク