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
In reply to Re: extract and export to multiple files
by GrandFather
in thread extract and export to multiple files
by zzgulu
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |