in reply to I'm trying to print the contents of a hash to newly created files
I'm wondering why you need the hash in the first place. Would it not be simpler to open, write and close the output file for each ID as you're reading the input file? Then you don't need to keep anything in memory. Something like:
use strict; use warnings; open my $in_fh, '<', "human...fa" or die $!; my $out_fh; while (defined(my $line = <$in_fh>)) { if ($line =~ /^>(.*)/) { my $id = $1; if ($out_fh) { close $out_fh or die $!; } open $out_fh, '>', $id or die $!; next; } if ($out_fh) { print $out_fh $line; } }
Note: code above is untested!
Also, you may be better off capturing only known good characters for the ID to avoid special characters (like shell redirection symbols) in filenames.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: I'm trying to print the contents of a hash to newly created files
by tobyink (Canon) on May 08, 2017 at 16:13 UTC | |
by Peter Keystrokes (Beadle) on May 08, 2017 at 18:15 UTC | |
by huck (Prior) on May 08, 2017 at 19:16 UTC | |
by haukex (Archbishop) on May 09, 2017 at 12:31 UTC |