大量のテストデータをつくるツール
csv形式の大量のテストデータをつくりたいときなどに使うツールのテンプレートです。
printfで対象項目の数値をインクリメントします。
#!/usr/bin/perl use strict; use warnings; use Fatal qw/ open close unlink /; { package FileMaker; my $fh; # filehandle sub new { my $self = shift; my $name = shift; bless { name => $name, increment => 1, }, $self; } sub set_start { $_[0]->{start} = $_[1]; $_[0]; } sub set_end { $_[0]->{end} = $_[1]; $_[0]; } sub set_str { $_[0]->{str} = $_[1]; $_[0]; } sub set_increment { $_[0]->{increment} = $_[1]; $_[0]; } sub make { my $self = shift; my $file = $self->{name}; my $start = $self->{start}; my $end = $self->{end}; my $str = $self->{str}; my $incre = $self->{increment}; open $fh, ">> $file"; for (my $i=$start; $i<=$end; $i+=$incre) { my @input = (); for (my $j=0; $j<($str =~ s/%/%/g); $j++) { push @input, $i; } printf $fh $str, @input; } close $fh; $self; } sub initialize { my $self = shift; my $file = $self->{name}; unlink $file; $self; } } my $file = FileMaker->new("filename.csv"); my $str_1 = 'tokyo%05d,090%05d,20071015'."\n"; my $str_2 = 'osaka%05d,090%05d,20071015'."\n"; $file->initialize ->set_str($str_1) ->set_start(1) ->set_end(3) ->make ->set_str($str_2) ->set_increment(2) ->set_start(4) ->set_end(10) ->make; exit 0;