Jackie Jackie wrote:
I tried to adapt this code to obtain my desired output. I need help. My logic is
While
if lines are not empty {do}
if lines are empty {do}
While
if lines are not empty {do}
else for empty lines{do}
I am new to programming. I have problem with logic and syntax. So please
explain to me how I solve this problem.
Thanks
use strict;
use warnings;
my @ar = [];
my $i = 0;
while (<DATA>) {
chomp; next if !length();
if (/^\s*&\s*$/) {
$i = 0; next;
}
push @{$ar[$i]}, @{$ar[$i++]} ? '&'.$_ : $_;
}
for my $ar (@ar) {
print @{$ar},"\n";
__DATA__name1
name2
name3
&
firstname1
firstname2
firstname3
&
adresse1
adresse2
adresse3
name4
name5
&
firstname4
firstname5
&
adresse4
adresse5
name6
name7
&
firstname6
firstname7
&
adresse6
adresse7
Desired output:
name1&firstname1&adresse1
name2&firstname2&adresse2
name3&firstname3&adresse3
name4&firstname4&adresse4
name5&firstname5&adresse5
etc.
$ echo "name1
name2
name3
&
firstname1
firstname2
firstname3
&
adresse1
adresse2
adresse3
name4
name5
&
firstname4
firstname5
&
adresse4
adresse5
name6
name7
&
firstname6
firstname7
&
adresse6
adresse7
" | perl -e'
my @x;
my $i = my $c = 0;
while ( <> ) {
chomp;
$c += $i unless /\S/;
if ( /^\s*&?\s*$/ ) {
$i = 0;
next;
}
push @{ $x[ $c + $i++ ] }, $_;
}
for my $r ( @x ) {
print join( "&", @$r ), "\n";
}
'
name1&firstname1&adresse1
name2&firstname2&adresse2
name3&firstname3&adresse3
name4&firstname4&adresse4
name5&firstname5&adresse5
name6&firstname6&adresse6
name7&firstname7&adresse7
John
--
The programmer is fighting against the two most
destructive forces in the universe: entropy and
human stupidity. -- Damian Conway
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/