If you have a question on how to do something in Perl, or you need a Perl solution to an actual real-life problem, or you're unsure why something you've tried just isn't working... then this section is the place to ask.

However, you might consider asking in the chatterbox first (if you're a registered user). The response time tends to be quicker, and if it turns out that the problem/solutions are too much for the cb to handle, the kind monks will be sure to direct you here.

Post a new question!

User Questions
Any Perlmonks users at WHY2025
No replies — Read more | Post response
by cavac
on Jul 29, 2025 at 09:30
Why is "any" slow in this case?
8 direct replies — Read more / Contribute
by Anonymous Monk
on Jul 27, 2025 at 19:55

    I am to read many textual files which represent 2D data/matrices, where "interesting" lines contain column and row indexes. Some of them should be skipped. In fact, the whole project works great and fast enough, I'm just puzzled, idly, at benchmarks when later I sought to "improve"/refactor. Data and code are reduced to nonsense for SSCCE.

    use strict; use warnings; use feature 'say'; use List::Util 'any'; use Benchmark 'cmpthese'; my $data = ''; for my $r ( 0 .. 31 ) { for my $c ( 0 .. 31 ) { $data .= "$c $r whatever\n" } } # say $data; die; my @skip = ( 0, 15, 16, 31 ); cmpthese -1, { ugly => sub { while ( $data =~ /^(\d+) (\d+)/mg ) { next if $1 == 0 or $1 == 15 or $1 == 16 or $1 == 31; next if $2 == 0 or $2 == 15 or $2 == 16 or $2 == 31; # something useful happens here, # after uninteresting entries have been skipped } return 1 }, ugly_cr => sub { while ( $data =~ /^(\d+) (\d+)/mg ) { my ( $c, $r ) = ( $1, $2 ); next if $c == 0 or $c == 15 or $c == 16 or $c == 31; next if $r == 0 or $r == 15 or $r == 16 or $r == 31; } return 1 }, any => sub { while ( $data =~ /^(\d+) (\d+)/mg ) { next if any { $1 == $_ } @skip; next if any { $2 == $_ } @skip; } return 1 }, any_cr => sub { while ( $data =~ /^(\d+) (\d+)/mg ) { my ( $c, $r ) = ( $1, $2 ); next if any { $c == $_ } @skip; next if any { $r == $_ } @skip; } return 1 } };

    Output:

    Rate any_cr any ugly ugly_cr any_cr 331/s -- -54% -64% -74% any 724/s 119% -- -22% -43% ugly 930/s 181% 28% -- -26% ugly_cr 1265/s 282% 75% 36% --

    Initial/working code is similar to "ugly_cr". Then I thought maybe I'd postpone assignment to lexicals until filtering out irrelevant lines. Will it be faster? No. The fact that "ugly" gets slower I speculate is related to $1, etc. being read-only, they are numified on each of the 4 comparisons. Is this correct?

    Then maybe "any" because it's XS will be fast and nice to look at and easy to add more r/c to skip later? It's a little slow for just 4 elements in array to skip, I wouldn't be surprised too much about result I got. What I'm completely puzzled about is "any_cr" is slower yet. Why? And why asymmetry about "ugly vs. ugly_cr" and "any vs. any_cr"? I don't understand.

How can I retrieve a DNA sequence from online database using perl code?
3 direct replies — Read more / Contribute
by supriyoch_2008
on Jul 25, 2025 at 03:22

    I am interested in retrieving a DNA sequence from the GenBank database of NCBI using a perl program run in my perl 5.10 version. I searched for such perl scripts online and came across the following code (given below) as ocs5.pl. When I tried to run the code in command prompt, the perl script produced several warnings (given below). Then I tried to resolve the issue of “500 SSL negotiation failed “ after reading a few online posts. As per the online suggestions, I updated LWP::Protocol::https, IO::Socket::SSL, Net::SSLeay, OpenSSL and Bio modules from cpan (https://www.cpan.org/) inside the lib folder of Perl. The problem still persists. I seek the advice of the perl monks/experts to fix this problem.

    Here goes the ocs5.pl code:

    #!/usr/bin/perl use strict; use warnings; use Bio::DB::GenBank; # Create a new GenBank database object my $db = Bio::DB::GenBank->new; # Desired GenBank accession number my $accession = 'NM_000059.4'; # Retrieve the sequence object my $seq = $db->get_Seq_by_acc($accession); # Print the sequence display ID if ($seq) { print "\n Sequence ID: ", $seq->display_id, "\n"; # You can access other information like the sequence itself: print "\n Sequence: ", $seq->seq, "\n"; # To save the sequence to a FASTA file: use Bio::SeqIO; my $seq_out = Bio::SeqIO->new(-file => ">your_sequence.fasta", -f +ormat => 'fasta'); $seq_out->write_seq($seq); } else { print "\n Could not retrieve sequence for accession: $accession\n" +; } exit;

    I get the following warnings after running the code:

    Microsoft Windows [Version 10.0.22631.5472] (c) Microsoft Corporation. All rights reserved. C:\Users\srinj>cd desktop C:\Users\srinj\Desktop>ocs5.pl ------------- EXCEPTION ------------- MSG: WebDBSeqI Request Error: 500 SSL negotiation failed: Content-Type: text/plain Client-Date: Fri, 25 Jul 2025 04:21:08 GMT Client-Warning: Internal response 500 SSL negotiation failed: STACK Bio::DB::WebDBSeqI::_request C:/Perl/lib/Bio/DB/WebDBSeqI.pm:708 STACK Bio::DB::WebDBSeqI::get_seq_stream C:/Perl/lib/Bio/DB/WebDBSeqI. +pm:514 STACK Bio::DB::NCBIHelper::get_Stream_by_acc C:/Perl/lib/Bio/DB/NCBIHe +lper.pm:502 STACK Bio::DB::WebDBSeqI::get_Seq_by_acc C:/Perl/lib/Bio/DB/WebDBSeqI. +pm:194 STACK toplevel C:\Users\srinj\Desktop\ocs5.pl:15 -------------------------------------

    The expected output should look as follows:

    >NM_000059.4 Homo sapiens BRCA2 DNA repair associated (BRCA2), transc +ript variant 1, mRNA AGAGGCGGAGCCGCTGTGGCACTGCTGCGCCTCTGCTGCGCCTCGGGTGTCTTTTGCGGCGGTGGGTCGC CGCCGGGAGAAGCGTGAGGGGACAGATTTGTGACCGGCGCGGTTTTTGTCAGCTTACTCCGGCCAAAAAA GAACTGCACCTCTGGAGCGGACTTATTTACCAAGCATTGGAGGAATATCGTAGGTAAAAATGCCTATTGG ATCCAAAGAGAGGCCAACATTTTTTGAAATTTTTAAGACACGCTGCAACAAAGCAGATTTAGGACCAATA AGTCTTAATTGGTTTGAAGAACTTTCTTCAGAAGCTCCACCCTATAATTCTGAACCTGCAGAAGAATCTG AACATAAAAACAACAATTACGAACCAAACCTATTTAAAACTCCACAAAGGAAACCATCTTATAATCAGCT GGCTTCAACTCCAATAATATTCAAAGAGCAAGGGCTGACTCTGCCGCTGTACCAATCTCCTGTAAAAGAA TTAGATAAATTCAAATTAGACTTAGGAAGGAATGTTCCCAATAGTAGACATAAAAGTCTTCGCACAGTGA AAACTAAAATGGATCAAGCAGATGATGTTTCCTGTCCACTTCTAAATTCTTGTCTTAGTGAAAGTCCTGT TGTTCTACAATGTACACATGTAACACCACAAAGAGATAAGTCAGTGGTATGTGGGAGTTTGTTTCATACA CCAAAGTTTGTGAAGGGTCGTCAGACACCAAAACATATTTCTGAAAGTCTAGGAGCTGAGGTGGATCCTG ATATGTCTTGGTCAAGTTCTTTAGCTACACCACCCACCCTTAGTTCTACTGTGCTCATAGTCAGAAATGA AGAAGCATCTGAAACTGTATTTCCTCATGATACTACTGCTAATGTGAAAAGCTATTTTTCCAATCATGAT GAAAGTCTGAAGAAAAATGATAGATTTATCGCTTCTGTGACAGACAGTGAAAACACAAATCAAAGAGAAG CTGCAAGTCATGGATTTGGAAAAACATCAGGGAATTCATTTAAAGTAAATAGCTGCAAAGACCACATTGG AAAGTCAATGCCAAATGTCCTAGAAGATGAAGTATATGAAACAGTTGTAGATACCTCTGAAGAAGATAGT TTTTCATTATGTTTTTCTAAATGTAGAACAAAAAATCTACAAAAAGTAAGAACTAGCAAGACTAGGAAAA AAATTTTCCATGAAGCAAACGCTGATGAATGTGAAAAATCTAAAAACCAAGTGAAAGAAAAATACTCATT TGTATCTGAAGTGGAACCAAATGATACTGATCCATTAGATTCAAATGTAGCAAATCAGAAGCCCTTTGAG AGTGGAAGTGACAAAATCTCCAAGGAAGTTGTACCGTCTTTGGCCTGTGAATGGTCTCAACTAACCCTTT CAGGTCTAAATGGAGCCCAGATGGAGAAAATACCCCTATTGCATATTTCTTCATGTGACCAAAATATTTC AGAAAAAGACCTATTAGACACAGAGAACAAAAGAAAGAAAGATTTTCTTACTTCAGAGAATTCTTTGCCA CGTATTTCTAGCCTACCAAAATCAGAGAAGCCATTAAATGAGGAAACAGTGGTAAATAAGAGAGATGAAG AGCAGCATCTTGAATCTCATACAGACTGCATTCTTGCAGTAAAGCAGGCAATATCTGGAACTTCTCCAGT GGCTTCTTCATTTCAGGGTATCAAAAAGTCTATATTCAGAATAAGAGAATCACCTAAAGAGACTTTCAAT GCAAGTTTTTCAGGTCATATGACTGATCCAAACTTTAAAAAAGAAACTGAAGCCTCTGAAAGTGGACTGG AAATACATACTGTTTGCTCACAGAAGGAGGACTCCTTATGTCCAAATTTAATTGATAATGGAAGCTGGCC AGCCACCACCACACAGAATTCTGTAGCTTTGAAGAATGCAGGTTTAATATCCACTTTGAAAAAGAAAACA AATAAGTTTATTTATGCTATACATGATGAAACATCTTATAAAGGAAAAAAAATACCGAAAGACCAAAAAT CAGAACTAATTAACTGTTCAGCCCAGTTTGAAGCAAATGCTTTTGAAGCACCACTTACATTTGCAAATGC TGATTCAGGTTTATTGCATTCTTCTGTGAAAAGAAGCTGTTCACAGAATGATTCTGAAGAACCAACTTTG TCCTTAACTAGCTCTTTTGGGACAATTCTGAGGAAATGTTCTAGAAATGAAACATGTTCTAATAATACAG TAATCTCTCAGGATCTTGATTATAAAGAAGCAAAATGTAATAAGGAAAAACTACAGTTATTTATTACCCC AGAAGCTGATTCTCTGTCATGCCTGCAGGAAGGACAGTGTGAAAATGATCCAAAAAGCAAAAAAGTTTCA GATATAAAAGAAGAGGTCTTGGCTGCAGCATGTCACCCAGTACAACATTCAAAAGTGGAATACAGTGATA CTGACTTTCAATCCCAGAAAAGTCTTTTATATGATCATGAAAATGCCAGCACTCTTATTTTAACTCCTAC TTCCAAGGATGTTCTGTCAAACCTAGTCATGATTTCTAGAGGCAAAGAATCATACAAAATGTCAGACAAG CTCAAAGGTAACAATTATGAATCTGATGTTGAATTAACCAAAAATATTCCCATGGAAAAGAATCAAGATG TATGTGCTTTAAATGAAAATTATAAAAACGTTGAGCTGTTGCCACCTGAAAAATACATGAGAGTAGCATC ACCTTCAAGAAAGGTACAATTCAACCAAAACACAAATCTAAGAGTAATCCAAAAAAATCAAGAAGAAACT ACTTCAATTTCAAAAATAACTGTCAATCCAGACTCTGAAGAACTTTTCTCAGACAATGAGAATAATTTTG TCTTCCAAGTAGCTAATGAAAGGAATAATCTTGCTTTAGGAAATACTAAGGAACTTCATGAAACAGACTT GACTTGTGTAAACGAACCCATTTTCAAGAACTCTACCATGGTTTTATATGGAGACACAGGTGATAAACAA GCAACCCAAGTGTCAATTAAAAAAGATTTGGTTTATGTTCTTGCAGAGGAGAACAAAAATAGTGTAAAGC AGCATATAAAAATGACTCTAGGTCAAGATTTAAAATCGGACATCTCCTTGAATATAGATAAAATACCAGA AAAAAATAATGATTACATGAACAAATGGGCAGGACTCTTAGGTCCAATTTCAAATCACAGTTTTGGAGGT AGCTTCAGAACAGCTTCAAATAAGGAAATCAAGCTCTCTGAACATAACATTAAGAAGAGCAAAATGTTCT TCAAAGATATTGAAGAACAATATCCTACTAGTTTAGCTTGTGTTGAAATTGTAAATACCTTGGCATTAGA TAATCAAAAGAAACTGAGCAAGCCTCAGTCAATTAATACTGTATCTGCACATTTACAGAGTAGTGTAGTT GTTTCTGATTGTAAAAATAGTCATATAACCCCTCAGATGTTATTTTCCAAGCAGGATTTTAATTCAAACC ATAATTTAACACCTAGCCAAAAGGCAGAAATTACAGAACTTTCTACTATATTAGAAGAATCAGGAAGTCA GTTTGAATTTACTCAGTTTAGAAAACCAAGCTACATATTGCAGAAGAGTACATTTGAAGTGCCTGAAAAC CAGATGACTATCTTAAAGACCACTTCTGAGGAATGCAGAGATGCTGATCTTCATGTCATAATGAATGCCC CATCGATTGGTCAGGTAGACAGCAGCAAGCAATTTGAAGGTACAGTTGAAATTAAACGGAAGTTTGCTGG CCTGTTGAAAAATGACTGTAACAAAAGTGCTTCTGGTTATTTAACAGATGAAAATGAAGTGGGGTTTAGG GGCTTTTATTCTGCTCATGGCACAAAACTGAATGTTTCTACTGAAGCTCTGCAAAAAGCTGTGAAACTGT TTAGTGATATTGAGAATATTAGTGAGGAAACTTCTGCAGAGGTACATCCAATAAGTTTATCTTCAAGTAA ATGTCATGATTCTGTTGTTTCAATGTTTAAGATAGAAAATCATAATGATAAAACTGTAAGTGAAAAAAAT AATAAATGCCAACTGATATTACAAAATAATATTGAAATGACTACTGGCACTTTTGTTGAAGAAATTACTG AAAATTACAAGAGAAATACTGAAAATGAAGATAACAAATATACTGCTGCCAGTAGAAATTCTCATAACTT AGAATTTGATGGCAGTGATTCAAGTAAAAATGATACTGTTTGTATTCATAAAGATGAAACGGACTTGCTA TTTACTGATCAGCACAACATATGTCTTAAATTATCTGGCCAGTTTATGAAGGAGGGAAACACTCAGATTA AAGAAGATTTGTCAGATTTAACTTTTTTGGAAGTTGCGAAAGCTCAAGAAGCATGTCATGGTAATACTTC AAATAAAGAACAGTTAACTGCTACTAAAACGGAGCAAAATATAAAAGATTTTGAGACTTCTGATACATTT TTTCAGACTGCAAGTGGGAAAAATATTAGTGTCGCCAAAGAGTCATTTAATAAAATTGTAAATTTCTTTG ATCAGAAACCAGAAGAATTGCATAACTTTTCCTTAAATTCTGAATTACATTCTGACATAAGAAAGAACAA AATGGACATTCTAAGTTATGAGGAAACAGACATAGTTAAACACAAAATACTGAAAGAAAGTGTCCCAGTT GGTACTGGAAATCAACTAGTGACCTTCCAGGGACAACCCGAACGTGATGAAAAGATCAAAGAACCTACTC TATTGGGTTTTCATACAGCTAGCGGGAAAAAAGTTAAAATTGCAAAGGAATCTTTGGACAAAGTGAAAAA CCTTTTTGATGAAAAAGAGCAAGGTACTAGTGAAATCACCAGTTTTAGCCATCAATGGGCAAAGACCCTA AAGTACAGAGAGGCCTGTAAAGACCTTGAATTAGCATGTGAGACCATTGAGATCACAGCTGCCCCAAAGT GTAAAGAAATGCAGAATTCTCTCAATAATGATAAAAACCTTGTTTCTATTGAGACTGTGGTGCCACCTAA GCTCTTAAGTGATAATTTATGTAGACAAACTGAAAATCTCAAAACATCAAAAAGTATCTTTTTGAAAGTT AAAGTACATGAAAATGTAGAAAAAGAAACAGCAAAAAGTCCTGCAACTTGTTACACAAATCAGTCCCCTT ATTCAGTCATTGAAAATTCAGCCTTAGCTTTTTACACAAGTTGTAGTAGAAAAACTTCTGTGAGTCAGAC TTCATTACTTGAAGCAAAAAAATGGCTTAGAGAAGGAATATTTGATGGTCAACCAGAAAGAATAAATACT GCAGATTATGTAGGAAATTATTTGTATGAAAATAATTCAAACAGTACTATAGCTGAAAATGACAAAAATC ATCTCTCCGAAAAACAAGATACTTATTTAAGTAACAGTAGCATGTCTAACAGCTATTCCTACCATTCTGA TGAGGTATATAATGATTCAGGATATCTCTCAAAAAATAAACTTGATTCTGGTATTGAGCCAGTATTGAAG AATGTTGAAGATCAAAAAAACACTAGTTTTTCCAAAGTAATATCCAATGTAAAAGATGCAAATGCATACC CACAAACTGTAAATGAAGATATTTGCGTTGAGGAACTTGTGACTAGCTCTTCACCCTGCAAAAATAAAAA TGCAGCCATTAAATTGTCCATATCTAATAGTAATAATTTTGAGGTAGGGCCACCTGCATTTAGGATAGCC AGTGGTAAAATCGTTTGTGTTTCACATGAAACAATTAAAAAAGTGAAAGACATATTTACAGACAGTTTCA GTAAAGTAATTAAGGAAAACAACGAGAATAAATCAAAAATTTGCCAAACGAAAATTATGGCAGGTTGTTA CGAGGCATTGGATGATTCAGAGGATATTCTTCATAACTCTCTAGATAATGATGAATGTAGCACGCATTCA CATAAGGTTTTTGCTGACATTCAGAGTGAAGAAATTTTACAACATAACCAAAATATGTCTGGATTGGAGA AAGTTTCTAAAATATCACCTTGTGATGTTAGTTTGGAAACTTCAGATATATGTAAATGTAGTATAGGGAA GCTTCATAAGTCAGTCTCATCTGCAAATACTTGTGGGATTTTTAGCACAGCAAGTGGAAAATCTGTCCAG GTATCAGATGCTTCATTACAAAACGCAAGACAAGTGTTTTCTGAAATAGAAGATAGTACCAAGCAAGTCT TTTCCAAAGTATTGTTTAAAAGTAACGAACATTCAGACCAGCTCACAAGAGAAGAAAATACTGCTATACG TACTCCAGAACATTTAATATCCCAAAAAGGCTTTTCATATAATGTGGTAAATTCATCTGCTTTCTCTGGA TTTAGTACAGCAAGTGGAAAGCAAGTTTCCATTTTAGAAAGTTCCTTACACAAAGTTAAGGGAGTGTTAG AGGAATTTGATTTAATCAGAACTGAGCATAGTCTTCACTATTCACCTACGTCTAGACAAAATGTATCAAA AATACTTCCTCGTGTTGATAAGAGAAACCCAGAGCACTGTGTAAACTCAGAAATGGAAAAAACCTGCAGT AAAGAATTTAAATTATCAAATAACTTAAATGTTGAAGGTGGTTCTTCAGAAAATAATCACTCTATTAAAG TTTCTCCATATCTCTCTCAATTTCAACAAGACAAACAACAGTTGGTATTAGGAACCAAAGTGTCACTTGT TGAGAACATTCATGTTTTGGGAAAAGAACAGGCTTCACCTAAAAACGTAAAAATGGAAATTGGTAAAACT GAAACTTTTTCTGATGTTCCTGTGAAAACAAATATAGAAGTTTGTTCTACTTACTCCAAAGATTCAGAAA ACTACTTTGAAACAGAAGCAGTAGAAATTGCTAAAGCTTTTATGGAAGATGATGAACTGACAGATTCTAA ACTGCCAAGTCATGCCACACATTCTCTTTTTACATGTCCCGAAAATGAGGAAATGGTTTTGTCAAATTCA AGAATTGGAAAAAGAAGAGGAGAGCCCCTTATCTTAGTGGGAGAACCCTCAATCAAAAGAAACTTATTAA ATGAATTTGACAGGATAATAGAAAATCAAGAAAAATCCTTAAAGGCTTCAAAAAGCACTCCAGATGGCAC AATAAAAGATCGAAGATTGTTTATGCATCATGTTTCTTTAGAGCCGATTACCTGTGTACCCTTTCGCACA ACTAAGGAACGTCAAGAGATACAGAATCCAAATTTTACCGCACCTGGTCAAGAATTTCTGTCTAAATCTC ATTTGTATGAACATCTGACTTTGGAAAAATCTTCAAGCAATTTAGCAGTTTCAGGACATCCATTTTATCA AGTTTCTGCTACAAGAAATGAAAAAATGAGACACTTGATTACTACAGGCAGACCAACCAAAGTCTTTGTT CCACCTTTTAAAACTAAATCACATTTTCACAGAGTTGAACAGTGTGTTAGGAATATTAACTTGGAGGAAA ACAGACAAAAGCAAAACATTGATGGACATGGCTCTGATGATAGTAAAAATAAGATTAATGACAATGAGAT TCATCAGTTTAACAAAAACAACTCCAATCAAGCAGTAGCTGTAACTTTCACAAAGTGTGAAGAAGAACCT TTAGATTTAATTACAAGTCTTCAGAATGCCAGAGATATACAGGATATGCGAATTAAGAAGAAACAAAGGC AACGCGTCTTTCCACAGCCAGGCAGTCTGTATCTTGCAAAAACATCCACTCTGCCTCGAATCTCTCTGAA AGCAGCAGTAGGAGGCCAAGTTCCCTCTGCGTGTTCTCATAAACAGCTGTATACGTATGGCGTTTCTAAA CATTGCATAAAAATTAACAGCAAAAATGCAGAGTCTTTTCAGTTTCACACTGAAGATTATTTTGGTAAGG AAAGTTTATGGACTGGAAAAGGAATACAGTTGGCTGATGGTGGATGGCTCATACCCTCCAATGATGGAAA GGCTGGAAAAGAAGAATTTTATAGGGCTCTGTGTGACACTCCAGGTGTGGATCCAAAGCTTATTTCTAGA ATTTGGGTTTATAATCACTATAGATGGATCATATGGAAACTGGCAGCTATGGAATGTGCCTTTCCTAAGG AATTTGCTAATAGATGCCTAAGCCCAGAAAGGGTGCTTCTTCAACTAAAATACAGATATGATACGGAAAT TGATAGAAGCAGAAGATCGGCTATAAAAAAGATAATGGAAAGGGATGACACAGCTGCAAAAACACTTGTT CTCTGTGTTTCTGACATAATTTCATTGAGCGCAAATATATCTGAAACTTCTAGCAATAAAACTAGTAGTG CAGATACCCAAAAAGTGGCCATTATTGAACTTACAGATGGGTGGTATGCTGTTAAGGCCCAGTTAGATCC TCCCCTCTTAGCTGTCTTAAAGAATGGCAGACTGACAGTTGGTCAGAAGATTATTCTTCATGGAGCAGAA CTGGTGGGCTCTCCTGATGCCTGTACACCTCTTGAAGCCCCAGAATCTCTTATGTTAAAGATTTCTGCTA ACAGTACTCGGCCTGCTCGCTGGTATACCAAACTTGGATTCTTTCCTGACCCTAGACCTTTTCCTCTGCC CTTATCATCGCTTTTCAGTGATGGAGGAAATGTTGGTTGTGTTGATGTAATTATTCAAAGAGCATACCCT ATACAGTGGATGGAGAAGACATCATCTGGATTATACATATTTCGCAATGAAAGAGAGGAAGAAAAGGAAG CAGCAAAATATGTGGAGGCCCAACAAAAGAGACTAGAAGCCTTATTCACTAAAATTCAGGAGGAATTTGA AGAACATGAAGAAAACACAACAAAACCATATTTACCATCACGTGCACTAACAAGACAGCAAGTTCGTGCT TTGCAAGATGGTGCAGAGCTTTATGAAGCAGTGAAGAATGCAGCAGACCCAGCTTACCTTGAGGGTTATT TCAGTGAAGAGCAGTTAAGAGCCTTGAATAATCACAGGCAAATGTTGAATGATAAGAAACAAGCTCAGAT CCAGTTGGAAATTAGGAAGGCCATGGAATCTGCTGAACAAAAGGAACAAGGTTTATCAAGGGATGTCACA ACCGTGTGGAAGTTGCGTATTGTAAGCTATTCAAAAAAAGAAAAAGATTCAGTTATACTGAGTATTTGGC GTCCATCATCAGATTTATATTCTCTGTTAACAGAAGGAAAGAGATACAGAATTTATCATCTTGCAACTTC AAAATCTAAAAGTAAATCTGAAAGAGCTAACATACAGTTAGCAGCGACAAAAAAAACTCAGTATCAACAA CTACCGGTTTCAGATGAAATTTTATTTCAGATTTACCAGCCACGGGAGCCCCTTCACTTCAGCAAATTTT TAGATCCAGACTTTCAGCCATCTTGTTCTGAGGTGGACCTAATAGGATTTGTCGTTTCTGTTGTGAAAAA AACAGGACTTGCCCCTTTCGTCTATTTGTCAGACGAATGTTACAATTTACTGGCAATAAAGTTTTGGATA GACCTTAATGAGGACATTATTAAGCCTCATATGTTAATTGCTGCAAGCAACCTCCAGTGGCGACCAGAAT CCAAATCAGGCCTTCTTACTTTATTTGCTGGAGATTTTTCTGTGTTTTCTGCTAGTCCAAAAGAGGGCCA CTTTCAAGAGACATTCAACAAAATGAAAAATACTGTTGAGAATATTGACATACTTTGCAATGAAGCAGAA AACAAGCTTATGCATATACTGCATGCAAATGATCCCAAGTGGTCCACCCCAACTAAAGACTGTACTTCAG GGCCGTACACTGCTCAAATCATTCCTGGTACAGGAAACAAGCTTCTGATGTCTTCTCCTAATTGTGAGAT ATATTATCAAAGTCCTTTATCACTTTGTATGGCCAAAAGGAAGTCTGTTTCCACACCTGTCTCAGCCCAG ATGACTTCAAAGTCTTGTAAAGGGGAGAAAGAGATTGATGACCAAAAGAACTGCAAAAAGAGAAGAGCCT TGGATTTCTTGAGTAGACTGCCTTTACCTCCACCTGTTAGTCCCATTTGTACATTTGTTTCTCCGGCTGC ACAGAAGGCATTTCAGCCACCAAGGAGTTGTGGCACCAAATACGAAACACCCATAAAGAAAAAAGAACTG AATTCTCCTCAGATGACTCCATTTAAAAAATTCAATGAAATTTCTCTTTTGGAAAGTAATTCAATAGCTG ACGAAGAACTTGCATTGATAAATACCCAAGCTCTTTTGTCTGGTTCAACAGGAGAAAAACAATTTATATC TGTCAGTGAATCCACTAGGACTGCTCCCACCAGTTCAGAAGATTATCTCAGACTGAAACGACGTTGTACT ACATCTCTGATCAAAGAACAGGAGAGTTCCCAGGCCAGTACGGAAGAATGTGAGAAAAATAAGCAGGACA CAATTACAACTAAAAAATATATCTAAGCATTTGCAAAGGCGACAATAAATTATTGACGCTTAACCTTTCC AGTTTATAAGACTGGAATATAATTTCAAACCACACATTAGTACTTATGTTGCACAATGAGAAAAGAAATT AGTTTCAAATTTACCTCAGCGTTTGTGTATCGGGCAAAAATCGTTTTGCCCGATTCCGTATTGGTATACT TTTGCTTCAGTTGCATATCTTAAAACTAAATGTAATTTATTAACTAATCAAGAAAAACATCTTTGGCTGA GCTCGGTGGCTCATGCCTGTAATCCCAACACTTTGAGAAGCTGAGGTGGGAGGAGTGCTTGAGGCCAGGA GTTCAAGACCAGCCTGGGCAACATAGGGAGACCCCCATCTTTACAAAGAAAAAAAAAAGGGGAAAAGAAA ATCTTTTAAATCTTTGGATTTGATCACTACAAGTATTATTTTACAAGTGAAATAAACATACCATTTTCTT TTAGATTGTGTCATTAAATGGAATGAGGTCTCTTAGTACAGTTATTTTGATGCAGATAATTCCTTTTAGT TTAGCTACTATTTTAGGGGATTTTTTTTAGAGGTAACTCACTATGAAATAGTTCTCCTTAATGCAAATAT GTTGGTTCTGCTATAGTTCCATCCTGTTCAAAAGTCAGGATGAATATGAAGAGTGGTGTTTCCTTTTGAG CAATTCTTCATCCTTAAGTCAGCATGATTATAAGAAAAATAGAACCCTCAGTGTAACTCTAATTCCTTTT TACTATTCCAGTGTGATCTCTGAAATTAAATTACTTCAACTAAAAATTCAAATACTTTAAATCAGAAGAT TTCATAGTTAATTTATTTTTTTTTTCAACAAAATGGTCATCCAAACTCAAACTTGAGAAAATATCTTGCT TTCAAATTGGCACTGATTCTGCCTGCTTTATTTTTAGCGCTATCACAGGACCCAGAGCCTATGCCCTTTT AAACTTACCACAAAAGCAGAAGATTAATTCAATTTAAGATGATACTCTCATTTGTTACGTCCTTTTTTTT TTTTTTTGGAGATGGAGTCTTGCTTTGTCGCCCATGCTGGAGTGCAGTGGCATGATCCTGGCTCACTGCA GCCTCCACTTCCCGGGTTCACGTAATTCTCCCACCTCAAGCCTCCCTAGTAGCTGGGATTACAGGGACGC ACCACCATGCCCAGCTAATTTTTGCATTTTTAGTAGAGACTGGGTTTTACCATGTTGGCCAAGCTGGTCT CAAACTCCTGATGTCAGGTGATCCATCTGCCTCAGCCTCCCAAAGTGCTGGGATTATAGGCGTGAGCCAC TGTGCCCGGCCAATATTTGTTACTTTCTTAGGTTTAATAGAGAAAAGGGATAAAACATTTCTAACTGGGA GTTAATTGCATGGAGAAGGTCTTAAATCAGATGTTTTAATGCCTTAAATGTCTGTATAATATCATGTTTT CAAATCTAATTATAAATACGTTTAAAGCCAAGAATAAATCTTTTAAAAAATTGA
Interrogating stashes - Camel example doesn't work?
2 direct replies — Read more / Contribute
by Intrepid
on Jul 24, 2025 at 14:20

    On p390 of the Camel, 4th edition, there is a code example for how to peek into the main:: symbol table hash ("stash"). I sort of duplicated it in my code, below (with changes to names of variables to suit my tastes), but I get a compile time error. The error is, precisely:

    Variable "@sym" is not imported at Scripts-unfinished/env-paths-2yaml.pm line 23. Variable "%sym" is not imported at Scripts-unfinished/env-paths-2yaml.pm line 24. Global symbol "@sym" requires explicit package name (did you forget to declare "my @sym"?) at Scripts-unfinished/env-paths-2yaml.pm line 23. Global symbol "%sym" requires explicit package name (did you forget to declare "my %sym"?) at Scripts-unfinished/env-paths-2yaml.pm line 24. Execution of Scripts-unfinished/env-paths-2yaml.pm aborted due to compilation errors.

    Here's the code at the present moment (how much you want to wager that 5 minutes from now I'll see what's wrong? ;-):

    #!/usr/bin/env perl # First created: Thu Jul 24 2025 12:47:02 PM -04:00 [EDT] use strict; use v5.18; use utf8; use warnings; use Data::Dumper qw/Dumper/; # use Perl::ImportReport; use Env qw/MANPATH INFOPATH PATH/; # ---------------------- ### ---------------------- # # BEGIN { # require Env; Env->import( grep( /[A-Z]*PATH/ , keys %ENV ) ); # } # ---------------------- ### ---------------------- # my ($symname); use vars ('$sym'); foreach $symname ( sort keys %main::Env:: ) { local *sym = $main::Env::{$symname}; say "\@$symname array is populated" if @sym; say "\%$symname hash is populated" if %sym; } # Try with ImportReport - doesn't work ### -------------------- ### ----------------------- # # my $object = Perl::ImportReport->new( $INC{'Env.pm'} ) # || die "Invalid value for PPI document source"; # say Dumper( $object->get_import_report('imports') ); ### -------------------- ### ----------------------- # __END__

        - Soren

    Jul 24, 2025 at 18:17 UTC

    A just machine to make big decisions
    Programmed by fellows (and gals) with compassion and vision
    We'll be clean when their work is done
    We'll be eternally free yes, and eternally young
    Donald Fagen —> I.G.Y.
    (Slightly modified for inclusiveness)

Net::OpenSSH and ProxyJump auth
2 direct replies — Read more / Contribute
by doke
on Jul 22, 2025 at 20:53

    I'm trying to use Net::OpenSSH with the ssh -oProxyJump=user@bastionhost option to jump the connection through an intermediate bastion host. However, I can't get the authentication to work. The built in authentication only does one password prompt. So I'm trying to use login_hander => custom_login_hander option, and a custom handler subroutine that recognizes the password prompt and gives the right password for that stage. It works for the first hop. However, Net::OpenSSH seems to only fire the custom handler once. It seems to never call it on the second password prompt. Can anyone suggest anything?

    I've got a workaround of calling the ssh binary, with the flags I need, and Expect-ing my way through the prompts. But it seems overly complicated.

Help on how to compile/install module DBD::MariaDB/Mysql on Windows using Strawberry Perl
4 direct replies — Read more / Contribute
by gosseyn
on Jul 22, 2025 at 10:25

    Hi folks,
    I'm coding under Windows because of my job requires it. I have for many years been using Active Perl, but it does not seam to be running anymore or maintained. By the way, I don't understand anything on their website (they don't speak about Perl). Everything was easy with Active Perl and PPM. But, Active Perl seamed obsolete and I moved to Strawberry Perl. And the things are not so easy.

    Now, I have some scripts which used the DBI interface and the DBD::Mysql driver to read/write in a database managed by the MAMP software which was running very well on Windows for years. Now, after installing Strawberry Perl, some modules are not installed anymore. The easiest way I found to (re)install them is to use the "cpanm" utility. It is usually running smooth and pretty fast.

    But the things were going wrong when trying to install and compile the DBD::Mysql module (driver) I need it for my scripts, in order to access the MySQL DBs. Here are the issues I had to deal with :

    1. The compilation failed because the Makefile couldn't get the Mysql configuration by calling the "mysql_config.pl" script provided by MAMP. I had to add the "bin" directory in the %PATH% system variable under Windows.
    2. I had to specify to Makefile.pl the "--mysql_config=mysql_config.pl" option to help to find the script, but the script does not seam to work well, it does not properly return values that you may call, for example by doing : "mysql_config.pl --version". It always return the %PATH% value.
    3. I made a specific "mysql_config.pl" script that I put in the build directory for Cpanm (C:\Users\me\.cpanm\work\workidxxx\Module-Name), very simple, that works when you call it with all available options, such as "--version". I have added some default values normally called by Makefile.pl, however without certainty of the right values to use.
    4. Then the compilation was refused because my MySQL version (5.47) was lesser than the minimum required by this version of the driver. I was advised to install the version 8 of MySQL, but 5.7 is considered as more stable. MAMP does not provide a version with MySQL 8. WAMP, yes, but I prefer MAMP.
    5. Alternatively, I have installed a package of MariaDB for Windows, but the compilation/installation of the DBD::MariaDB, based on DBD::Mysql, failed the same way. I have adapted the modifications I made for DBD::Mysql for MariaDB, so now, I'm focusing on installing/compiling the MariaDB driver, which seams also to be compatible with MySQL.

    I'm at the point where, after running the Makefile.pl file with these options : "perl Makefile.pl --cflags="-IC:\Program Files\MariaDB 11.8\include\mysql" --libs="-LC:\Program Files\MariaDB 11.8\lib -lmysqlclient" --testdb=test --testuser=perl --mariadb_config=.\mariadb_config.pl", it cannot find the "mariadb_config.pl" which is located in the current directory :
    "Specified mysql configuration script '.\mariadb_config.pl' doesn't exist. Please check path/permissions."

    I'm stuck, now, and I can't use all my scripts connecting to the MySQL/MariaDB database now. If someone is good at this configuration and can help, I would be grateful. Thanks.

    Gosseyn alias Alan. PS : I have managed to install the all stuff under darwin (MacOS X) with homebrew. Everything was running fine until I get to install DBD::MariaDB with Cpanm. It's a curse...
    -- Gosseyn
How am i doing?
7 direct replies — Read more / Contribute
by Anonymous Monk
on Jul 17, 2025 at 10:23
    This is my 2nd script since I started learning/reading the new perl book "Programming Perl" I think I should ask what my coding style is and also how to fix the bug. Can I leave out OO code for a while or should I look at that first or are there any other problems with how I am approaching it. its a project euler problem:
    #!/usr/bin/perl use v5.14; my $result = 0; sub fib { my @frame = @_; @frame[0] = @frame[0] + @frame[1]; @frame[1] = @frame[2]; @frame[3] = @frame[2]; count($frame[0]); return fib(@frame) unless($frame[0] >= 4000000); } sub count { my $increment = @_; if(($increment % 2) == 0) { $result = $result + $increment; } } fib(1,2,3); print $result;
Using Perl's open() to investigate bash login environment
3 direct replies — Read more / Contribute
by Intrepid
on Jul 16, 2025 at 13:41

    After a lot of tweaking and experimentation I got code that will display for me the functions that are defined in a bash shell on my system. I first wrote the code 13 years ago. I broke this code out of a much larger modulino that I started back then and never got entirely working.

    This scriptlet is working in CygPerl but not in Perl on Linux.

    #!/usr/bin/env perl # Last modified: Wed Jul 16 2025 12:52:52 PM -04:00 [EDT] # Bash-functions.pl use strict; use v5.18; use utf8; use warnings; local $ENV{'PERL5SHELL'} = q=/usr/bin/bash=; local $ENV{'SHELL'} = q=/usr/bin/bash=; my $spawnFH; my $elist; my $cPid = open( $spawnFH, q[-|], qq[$ENV{'PERL5SHELL'} -login command + builtin declare -p -F] ) or die "Bad open from pipe: $!"; if ( $cPid ) { $elist = join qq[], grep {/^declare -f/} <$spawnFH>; close $spawnFH or warn qq/Bad close on process $cPid: $!|$?/; } print qq[Results from $cPid:\n], $elist, qq[\n]; __END__
    Results on CygPerl, Bash 5.2.21
    $ perl Bash-functions.pl Results from 3716: declare -f SBP declare -f exp declare -f gawklibpath_append declare -f gawklibpath_default declare -f gawklibpath_prepend declare -f gawkpath_append declare -f gawkpath_default declare -f gawkpath_prepend declare -f profile_d
    Results on Gnu/Linux, Bash 5.2.15
    $ perl Bash-functions.pl /usr/bin/bash: command: No such file or directory Bad close on process 12284: |32512 at Downloads/Bash-functions.pl line + 17. Results from 12284:

    Apparently bash behaves differently, when invoked this way on Linux. If I use the bash invocation alone (on Linux): command builtin declare -p -F, I see a nice list of functions. Also, I am puzzled wrt why I need to start the command with $PERL5SHELL. I would have thought, based on documentation I read, that seeing shell metacharacters in the open string would have caused perl to automatically invoke a shell.

    Jul 16, 2025 at 17:46 UTC

    A just machine to make big decisions
    Programmed by fellows (and gals) with compassion and vision
    We'll be clean when their work is done
    We'll be eternally free yes, and eternally young
    Donald Fagen —> I.G.Y.
    (Slightly modified for inclusiveness)

Parser XLSX without Crypt
1 direct reply — Read more / Contribute
by spiral
on Jul 15, 2025 at 10:04
    Because of group policy I cannot install anything that needs a dll. I need to parse an xlsx file, but

    use Spreadsheet::ParseXLSX;

    results in

    Can't locate Crypt/Mode/CBC.pm in @INC (you may need to install the Crypt::Mode::CBC module)

    Is there a way to do without this module and still be able to parse the xlsx file?
parse json
5 direct replies — Read more / Contribute
by joyfedl
on Jul 12, 2025 at 10:58

    I have a problem parsing some json message

    Here is the response I get from the request, I outputted few because the file is large

    { "get": "fixtures", "parameters": { "live": "all" }, "errors": [], "results": 43, "paging": { "current": 1, "total": 1 }, "response": [ { "fixture": { "id": 1328845, "referee": null, "timezone": "UTC", "date": "2025-07-12T12:30:00+00:00", "timestamp": 1752323400, "periods": { "first": 1752323400, "second": null }, "venue": { "id": 21763, "name": "Skreia ipl kunstgress", "city": "Skreia" }, "status": { "long": "First Half", "short": "1H", "elapsed": 25, "extra": null } }, "league": { "id": 774, "name": "3. Division - Girone 1", "country": "Norway", "logo": "https://media.api-sports.io/football/leagues/774.png" +, "flag": "https://media.api-sports.io/flags/no.svg", "season": 2025, "round": "Group 1 - 14", "standings": true }, "teams": { "home": { "id": 23420, "name": "Sortland", "logo": "https://media.api-sports.io/football/teams/23420.pn +g", "winner": null }, "away": { "id": 6974, "name": "Bćrum", "logo": "https://media.api-sports.io/football/teams/6974.png +", "winner": null } }, "goals": { "home": 0, "away": 0 }, "score": { "halftime": { "home": 0, "away": 0 }, "fulltime": { "home": null, "away": null }, "extratime": { "home": null, "away": null }, "penalty": { "home": null, "away": null } }, "events": [] }, { "fixture": { "id": 1394987, "referee": null, "timezone": "UTC", "date": "2025-07-12T12:00:00+00:00", "timestamp": 1752321600, "periods": { "first": 1752321600, "second": null }, "venue": { "id": 21680, "name": "Estádio Deputado Galdino Leite", "city": "Salvador, Bahia" }, "status": { "long": "Halftime", "short": "HT", "elapsed": 45, "extra": null } }, "league": { "id": 1073, "name": "Baiano U20", "country": "Brazil", "logo": "https://media.api-sports.io/football/leagues/1073.png +", "flag": "https://media.api-sports.io/flags/br.svg", "season": 2025, "round": "Round of 16", "standings": false }, "teams": { "home": { "id": 25814, "name": "Galícia U20", "logo": "https://media.api-sports.io/football/teams/25814.pn +g", "winner": false }, "away": { "id": 13017, "name": "Jacuipense U20", "logo": "https://media.api-sports.io/football/teams/13017.pn +g", "winner": true } }, "goals": { "home": 1, "away": 2 }, "score": { "halftime": { "home": 1, "away": 2 }, "fulltime": { "home": null, "away": null }, "extratime": { "home": null, "away": null }, "penalty": { "home": null, "away": null } }, "events": [] } ] }

    I removed use strict; because i was getting this error

    Bareword "name" not allowed while "strict subs" in use at rss.pl line +26. Bareword "name" not allowed while "strict subs" in use at rss.pl line +27.

    When i try to run my code this is the error i get Not an ARRAY reference at script.pl line 18.

    my full script is

    #!/usr/bin/perl use warnings; use LWP::UserAgent; use HTTP::Request; use JSON; my $url = "https://v3.football.api-sports.io/fixtures?live=all"; my $ua = LWP::UserAgent->new; my $req = HTTP::Request->new(GET => $url); $req->header('x-rapidapi-host' => 'v3.football.api-sports.io'); $req->header('x-rapidapi-key' => '.......'); my $response = $ua->request($req); my $parse_json = JSON::XS->new->decode ($response->content); my @matches = $parse_json->[1]; # Get all results in "response": [ ] if ($response->is_success) { foreach my $results (@matches) { my $matche_status = $results->{status}->{short}; my $teamA = $results->{teams}->{home}>{name}; my $teamB = $results->{teams}->{away}>{name}; my $teamA_scores_HT = $results->{score}->{halftime}->{home}; my $teamB_scores_HT = $results->{score}->{halftime}->{away}; my $teamA_scores_FT = $results->{score}->{fulltime}->{home}; my $teamB_scores_FT = $results->{score}->{fulltime}->{away}; print "$matche_status | $teamA has scored $teamA_scores_HT in +Halftime | $teamA_scores_FT in fulltime"; # Get all Home teams result +s print "$matche_status | $teamB has scored $teamB_scores_HT in +Halftime | $teamB_scores_FT in fulltime"; # Get all Away teams result +s # Print Such # HT | Arsenal has scored 1 in halftime | 2 in fulltime # FT | Chelsea has scored 2 in halftime | 3 in fulltime } } else { print $response->status_line; }

Add your question
Title:
Your question:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":


  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.