in reply to
Simple parse of text file to csv
"..parsing a text file and creating a CSV file.."
of course, if you are creating a CSV file, you will have to look into module Text::CSV or Text::CSV_XS. Hence, davido's important comment.
However, for "Flat File", data you posted the following should still work:
use warnings;
use strict;
my %data_config;
my $key;
while (<DATA>) {
chomp;
if (/(.+?):$/) {
$key = $1;
}
else {
push @{ $data_config{$key} }, $_; # {updated}
}
}
print "Host, OS, Version, Hot Fixes, Features\n";
for ( 'Host', 'Kernel', 'Version', 'Hot fixes', 'Enabled Features' ) {
print "@{$data_config{$_}}, ";
}
__DATA__
Host:
NetDevice1234
Kernel:
Linux 2.6.18-164.11
Version:
Driver 23.4.1 333.0
Hotfix BLD Edition
Hot fixes:
HF372590
HF372804
HF372864
Enabled Features:
FTP
HTTP
SMTP
Active Directory
Output:
Host, OS, Version, Hot Fixes, Features
NetDevice1234, Linux 2.6.18-164.11, Driver 23.4.1 333.0 Hotfix BLD Edi
+tion , HF372590 HF372804 HF372864, FTP HTTP SMTP Active Dir
+ectory,
Update:
Thanks
Tux,
$key was intended, instead of
$1 used in this line
push ... . It has been corrected.
If you tell me, I'll forget.
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author
unknown to me