in reply to Re^2: converting rows into column
in thread converting rows into column
I downvoted your post since you obviously did not read the links biohisham gave you.
Had you done so, you would surely have formatted your second post with <p></p> and <code></code> tags:
thanx so much for ur advice... actually am a new in perl monk...
actually i want to make a database of mp3 songs. so after retrieving the tag info of each song..i got a output like :Artist: Rock Title: Fusion Album: Fusion Year: 2002 Genre: Other Artist: MelB Title: who am i: Album: donny Year: 2004 Genre: Other Artist: bon jo Title: i can stay Album : Armyman Year: 2009 Genre: Other Artist: Pearl Title: Last Album: Jam Year: 1983 Genre: Othernow i want my database to be like :
Artist Title Album Year Genre ------ ----- ----- ----- ----- Rock bbb hhh 2000 POP MelB Hum por 2003 other bon jo Armyman 209 othersetc.
#!/usr/bin/perl use warnings; use strict; my %hasharray; open (my $fh, "<", "C:/songdata1.txt") or die "can't open the file"; while (<$fh>){ my ($header,$info) = split /:/; }I dont know how to proceed futher.
plz help me out.
Now, to help you out:
Code (untested!) :
#!/usr/bin/perl -p00 use warnings; use strict; open (my $fh, "<", "C:/songdata1.txt") or die "can't open the file: $!\n"; # $! gives a clue my %hash; while (<$fh>){ chomp; my @array = split /\n/, $_; for (@array) { my ($header,$info) = split /\s*:\s*/; # eliminate blanks befor +e/after ':' $hash{$header} = $info; } write; } format TOP = Artist Title Album Year Genre ------ ----- ----- ---- ----- . format STDOUT = @<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<<< +<< $hash{Artist}, $hash{Title}, $hash{Album}, $hash{Year}, $hash +{Genre} .
Instead of repeating $hash{} in format STDOUT, you could also use a hash slice:
@hash{ qw(Artist Title Album Year Genre) }
|
|---|