人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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);
}

●質問者: komamix
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:ArrayList dB Java Perl PUSH
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● JULY
●50ポイント

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

TAKENAKA's Web Page: Perl入門

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

◎質問者からの返答

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


2 ● shintabo
●50ポイント

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

#!/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__

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ