in reply to extract and export to multiple files
Using strictures is good.
Declaring all your variables in one block up front is very bad. Not checking file open is bad. Not using the three parameter version of open is bad. Not using lexical file handles is bad.
Avoid using explicit counters where you don't need to.
Declare variables in the smallest possible scope. Be aware of the last parameter to split and use it where appropriate. Taking all the above into account the following should serve you better:
#!/usr/bin/perl use strict; use warnings; my $outdir = 'D:/share/out'; my $inpath = "D:/share/in/content.txt"; open my $inFile, '<', $inpath or die "Failed to open $inpath: $!"; while (<$inFile>) { chomp; my ($title, $content) = split "\t", $_, 2; my $outpath = "$outdir/$title$."; open my $outFile, '>', $outpath or die "Can't create $outpath: $!" +; print $outFile $content; close $outFile; } close $inFile;
Note in particular the use of the input line number special variable $. (in "$outdir/$title$.") instead of using an explicit counter.
Update: Fix silly open error - thanks jwkrahn
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: extract and export to multiple files
by jwkrahn (Abbot) on Apr 09, 2010 at 06:16 UTC | |
|
Re^2: extract and export to multiple files
by zzgulu (Novice) on Apr 09, 2010 at 13:53 UTC | |
by GrandFather (Saint) on Apr 09, 2010 at 21:51 UTC | |
by zzgulu (Novice) on Apr 10, 2010 at 02:18 UTC | |
by GrandFather (Saint) on Apr 10, 2010 at 05:09 UTC | |
by zzgulu (Novice) on Apr 10, 2010 at 15:47 UTC | |
by umasuresh (Hermit) on Apr 09, 2010 at 14:49 UTC |