in reply to Using hash elements to create an SQL Statemant
Only notice that the array is different because before you did not want the last element, but know, you remove the last element of the array in the pop @array, so you do not have to skip the last element. Daniel.use strict; my @views = ( 'view0', 'view1', 'view3'); my $num_of_views = scalar(@views); my %hash; my @global_include = ("buffersize, size, value, speed", "buffersize, s +ize, value, speed","buffersize, size, value, speed"); my $lastview; my $output; for (my $j = 0; $j < $num_of_views; $j++){ my @array = split (", ",$global_include[$j]); pop @array; $hash{$views[$j]} = \@array; } foreach my $key (sort(keys %hash)){ # Do this only the first time. if(not defined($lastview)){ $lastview = $key; $output = "$key"; next; } $output .= " full outer join $key on "; my $i; my $array_elements_used = @{$hash{$key}}-1; #loop through all of the elements, including the last since you ha +ve removed it in the pop before!! for($i=0;$i<=$array_elements_used;$i++){ $output .= "$lastview.$hash{$lastview}[$i] = $key.$hash{$key}[$i +]"; # only add an "and" if this is not the last element used. $output .= " and " if ($i != $array_elements_used); } $lastview = $key; } print $output, "\n";
|
|---|