Hi, Perl3r.
Try the following:
#!/usr/bin/perl
#
use strict;
use warnings;
$ARGV[0] or die "Usage: $0 <filename> [<filename>] ...";
my ( $template_file_name, $templateText, %hash ) = '';
my @vars = split "\n", <<END;
##location##
##rtrname##
##loop0-ip##
##frame-ip##
##frame-DLCI##
##eth0-ip##
END
while (<>) {
chomp;
my @fields = split /,/;
my $templateFN = pop @fields;
if ( $template_file_name ne $templateFN ) {
$template_file_name = $templateFN;
undef $templateText;
}
@hash{@vars} = @fields;
$templateText //= getTemplateText($template_file_name);
my $templateTextCopy = $templateText;
$templateTextCopy =~ s/$_/$hash{$_}/g for keys %hash;
my $ofile_name = $hash{'##rtrname##'} . '.txt';
open my $fh, '>', $ofile_name or die "$ofile_name: $!";
print $fh $templateTextCopy;
close $fh;
}
sub getTemplateText {
my ($template_file_name) = @_;
local $/;
open my $fh, '<', $template_file_name or die "$template_file_name:
+ $!";
$templateText = <$fh>;
close $fh;
return $templateText;
}
The last CSV column needs to contain the template's file name. The script can handle multiple files at once, e.g.:
processCSV.pl csv1.csv csv2.csv
The script uses Perl's 'defined-or-equals' operator to only read the template's text once, and will read in a new template if it detects a change in the template's file name (e.g., when going from csv1.csv to csv2.csv).
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|