@data=grep{(split(/\-/,(split(/\,/,$_))[0]))[0]==$juo || (split(/\-/,(split(/\,/,$_))[0]))[1]==$juo}@data;
できれば
(split(/\-/,(split(/\,/,$_))[0]))[0]をpattern1,
(split(/\-/,(split(/\,/,$_))[0]))[0]をpattern2,
と何かで定義して
@data=grep{pattern1==$juo || pattern2==$juo}@data;
のようにして短縮したいのですが
配列部分にアクセスする定義部に関してのサブルーチンかがわかりませんので教えてください。
同じ処理をまとめると
@data = grep { my @tmp = split( /\-/, ( split( /\,/, $_ ) )[0] ); $juo == $tmp[0] || $juo == $tmp[1]; } @data;
関数にしてやるとすると
sub func { split( /\-/, ( split( /\,/, shift ) )[0] ) } @data = grep { my @tmp = func($_); $juo == $tmp[0] || $juo == $tmp[1]; } @data;
なるほどこういうやり方もあるんですね。早速試してみます。