in reply to Print Output to New File

Hello FIJI42,

Regarding I want to print the hash information into two separate files in fasta format try sample of code below:

#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use YAML qw( DumpFile LoadFile ); my %hash = ( ';LCBO - Prolactin precursor - Bovine' => "a sample seque +nce in FASTA format MDSKGSSQKGSRLLLLLVVSNLLLCQGVVSTPVCPNGPGNCQVSLRDLFDRAVMVSHYIHD +LSS EMFNEFDKRYAQGKGFITMALNSCHTSSLPTPEDKEQAQQTHHEVLMSLILGLLRSWNDPL +YHL VTEVRGMKGAPDAILSRAIEIEEENKRLLEGMEMIFGQVIPGAKETEPYPVWSGLPSLQTK +DED ARYSAFYNLLHCLRRDSSKIDTYLKLLNCRIIYNNNC*" ); p %hash; my $filename = 'test.txt'; DumpFile( $filename, \%hash ); my $reconstituted = LoadFile($filename); # check it out in Data::Dumper style- print Dumper $reconstituted; __END__ $ perl test.pl { ';LCBO - Prolactin precursor - Bovine' "a sample sequence in FAS +TA format MDSKGSSQKGSRLLLLLVVSNLLLCQGVVSTPVCPNGPGNCQVSLRDLFDRAVMVSHYIHD +LSS EMFNEFDKRYAQGKGFITMALNSCHTSSLPTPEDKEQAQQTHHEVLMSLILGLLRSWNDPL +YHL VTEVRGMKGAPDAILSRAIEIEEENKRLLEGMEMIFGQVIPGAKETEPYPVWSGLPSLQTK +DED ARYSAFYNLLHCLRRDSSKIDTYLKLLNCRIIYNNNC*" } $VAR1 = { ';LCBO - Prolactin precursor - Bovine' => 'a sample sequence + in FASTA format MDSKGSSQKGSRLLLLLVVSNLLLCQGVVSTPVCPNGPGNCQVSLRDLFDRAVMVSHYIHD +LSS EMFNEFDKRYAQGKGFITMALNSCHTSSLPTPEDKEQAQQTHHEVLMSLILGLLRSWNDPL +YHL VTEVRGMKGAPDAILSRAIEIEEENKRLLEGMEMIFGQVIPGAKETEPYPVWSGLPSLQTK +DED ARYSAFYNLLHCLRRDSSKIDTYLKLLNCRIIYNNNC*' }; $ cat test.txt --- ';LCBO - Prolactin precursor - Bovine': |- a sample sequence in FASTA format MDSKGSSQKGSRLLLLLVVSNLLLCQGVVSTPVCPNGPGNCQVSLRDLFDRAVMVSHYI +HDLSS EMFNEFDKRYAQGKGFITMALNSCHTSSLPTPEDKEQAQQTHHEVLMSLILGLLRSWND +PLYHL VTEVRGMKGAPDAILSRAIEIEEENKRLLEGMEMIFGQVIPGAKETEPYPVWSGLPSLQ +TKDED ARYSAFYNLLHCLRRDSSKIDTYLKLLNCRIIYNNNC*

I do not have sample of your data to test but it should be ok.

Update: Adding sample of fasta data and output that I found here FASTA format. Play around with the hash and the data that you want to populate.

Hope this helps, BR.

Seeking for Perl wisdom...on the process of learning...not there...yet!

Replies are listed 'Best First'.
Re^2: Print Output to New File (UPDATED)
by 1nickt (Canon) on Nov 03, 2017 at 13:11 UTC

    Hi thanos1983,

    What is p %hash;? Typo?

    $ perl -c 1202669.pl Operator or semicolon missing before %hash at 1202669.pl line 13. Ambiguous use of % resolved as operator % at 1202669.pl line 13. Bareword "p" not allowed while "strict subs" in use at 1202669.pl line + 13. Bareword "hash" not allowed while "strict subs" in use at 1202669.pl l +ine 13. 1202669.pl had compilation errors


    The way forward always starts with a minimal test.

      Hello 1nickt,

      I was experimenting with Data::Printer as an alternative way.

      You can use it for example like:

      use Data::Printer; p %hash;

      This why you could see the printing part. Hope is more clear now. :)

      Update: Sample of code that I was experimenting, see below:

      #!/usr/bin/perl use strict; use warnings; use Data::Printer; my %hash = ( ';LCBO - Prolactin precursor - Bovine' => "a sample seque +nce in FASTA format MDSKGSSQKGSRLLLLLVVSNLLLCQGVVSTPVCPNGPGNCQVSLRDLFDRAVMVSHYIHD +LSS EMFNEFDKRYAQGKGFITMALNSCHTSSLPTPEDKEQAQQTHHEVLMSLILGLLRSWNDPL +YHL VTEVRGMKGAPDAILSRAIEIEEENKRLLEGMEMIFGQVIPGAKETEPYPVWSGLPSLQTK +DED ARYSAFYNLLHCLRRDSSKIDTYLKLLNCRIIYNNNC*" ); my $filename = 'output.txt'; open(my $fh, '>', $filename) or die "Could not open file '$filename' $!"; p(%hash, output => $fh); close $fh or warn "Could not open file '$filename' $!"; print "Done\n"; __END__ $ perl test.pl Done $ cat output.txt { ';LCBO - Prolactin precursor - Bovine' "a sample sequence in FAS +TA format MDSKGSSQKGSRLLLLLVVSNLLLCQGVVSTPVCPNGPGNCQVSLRDLFDRAVMVSHYIHD +LSS EMFNEFDKRYAQGKGFITMALNSCHTSSLPTPEDKEQAQQTHHEVLMSLILGLLRSWNDPL +YHL VTEVRGMKGAPDAILSRAIEIEEENKRLLEGMEMIFGQVIPGAKETEPYPVWSGLPSLQTK +DED ARYSAFYNLLHCLRRDSSKIDTYLKLLNCRIIYNNNC*" }

      BR / Thanos

      Seeking for Perl wisdom...on the process of learning...not there...yet!