perl初心者です。

javaであればArrayListに入れたりできるようなデータはどう処理すればいいんでしょうか?
DBの検索結果とかみなさんハッシュと配列だけで済ませてるんでしょうか?

うまく言えないのですがJavaでArrayListを使うときのような場合、Perlではどういう方法が一般的なのか知りたいです。
以下のようなソースコードを例にサンプルコードを見せてください。

配列を@line1~という風にいっぱい定義し、非常に汚いなぁと思ってます。
是非ともループでうまく書きたいところなんですが、配列に配列を入れてみたり、配列にハッシュを入れてみたりしても自分ではうまく行きませんでした。

#データを読み込み
@read_data = &file_reader('./test');

$count = 1;
foreach my $line (@read_data) {

if ( $count <= 64 ) {
push( @line1, $line );
}
if ( ( $count >= 65 ) and ( $count <= 128 ) ) {
push( @line2, $line );
}
if ( ( $count >= 129 ) and ( $count <= 192 ) ) {
push( @line3, $line );
}
$count++;
}

if ( @line1 ne "0" ) {
$id = 1;
&subroutine($id,@line1);
}

if ( @line2 ne "0" ) {
$id = 2;
&subroutine($id,@line2);
}
if ( @line3 ne "0" ) {
$id = 3;
&subroutine($id,@line3);
}

回答の条件
  • 1人2回まで
  • 登録:2009/02/16 18:05:47
  • 終了:2009/02/22 23:06:08

回答(2件)

id:JULY No.1

JULY回答回数966ベストアンサー獲得回数2472009/02/16 20:16:05

ポイント50pt

リファレンスの配列を使うと、イメージするものに近いと思います。

TAKENAKA's Web Page: Perl入門

ただ、リファレンスの記述の仕方が複雑(というか、混乱しやすい)ので、上記サイトの他のページも参考にして、まずは「Perl のリファレンスとはなんぞや」といったところから理解すると良いでしょう。

id:komamix

勉強になります。考え方がJavaとホントに違うんですね。

2009/02/22 23:02:49
id:shintabo No.2

shintabo回答回数45ベストアンサー獲得回数102009/02/21 01:35:27

ポイント50pt

# こんなのは、どーですか?

#!/usr/bin/perl

use strict;

use warnings;

my $bit = 64;

my @read_data = file_reader('./test');

for my $id (1..3) {

print subroutine($id, splice(@read_data, 0, $bit)), "\n";

}

print scalar(@read_data), "\n";

exit;

sub subroutine {

my($id, @data) = @_;

return undef if (!@data);

return scalar(@data);

}

sub file_reader {

my $file = shift;

open(IN, $file) or die $!;

my @in = <IN>;

close(IN);

return @in;

}

__END__

id:komamix

サンプルソースありがとうございます。これはまたまったく違う書き方ですね。でもこれぐらいきれいに書ければ大満足です。ちょっと実行&勉強してみようと思います。

2009/02/22 23:05:56

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません