package ArrayRef; # # $Id: ArrayRef.pm,v 1.5 2001/11/21 09:37:46 white Exp $ # use strict vars; sub new{ my $class = shift; my $arrayref = shift; return bless $arrayref , ArrayRef; } sub each{ my $self = shift; my($func,@args) = @_; my($array); foreach $array (@$self){ &$func(@$array,@args); } return $self; } sub dump{ my $self = shift; my($FILE,$array,$value); my $separator = shift || ','; $FILE = shift || STDOUT; foreach $array (@$self){ print join($separator,@$array); print "\n"; } return $self; } sub hashref{ my $self = shift; my($key,@args) = @_; my($i,$k,$name,$array,%result); foreach $array (@$self){ $i = 1; $name = $array->[0]; $result{$name} = {}; foreach $k (@args){ $result{$name}{$k} = $array->[$i++]; } } return \%result; } sub clean{ my $self = shift; my($key) = @_; map{ if($_->[$key] eq ''){$_ = undef;} }@$self; return $self; } sub joinByKey{ my $self = shift; my($k,$separator) = @_; my($key,@result,%result,$i,$array); foreach $array (@$self){ $key = $array->[$k]; $result{$key} ||= []; $i = 0; foreach(@$array){ $result{$key}->[$i] ||= []; push(@{$result{$key}->[$i]},$array->[$i]); $i++; } } foreach $key (sort {$a <=> $b} keys %result){ $array = $result{$key}; map { $_ = join($separator,@$_) } @$array; $array->[$k] = $key; $result[$#result + 1] = $array; } @$self = @result; return $self; } sub joinField{ my $self = shift; my($to,$from,$separator) = @_; my($hash,$array); $separator ||= "\n"; foreach $array (@$self){ $array->[$to] = join($separator,@$array[$to,$from]); splice(@$array,$from,1); } return $self; } sub Jcode{ my $self = shift; my($array); foreach $array (@$self){ map{ &Jcode::convert(\$_,@_); } @$array; } return $self; } sub merge{ my $self = shift; my($arrayref) = @_; push(@$self,@$arrayref); return $self; } 1;