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
passing newline in string argument
3 direct replies — Read more / Contribute
by Special_K
on Aug 01, 2025 at 14:49

    I have the following perl script:


    #!/usr/bin/perl -w use strict; use Getopt::Long; my $string; GetOptions( "string=s" => \$string ); printf("string = $string\n");

    I have the following shell script that calls the above perl script:


    #!/bin/tcsh /home/perl_scripts/pass_newline_as_text.pl \ -string 'foo\nbar'

    The output I would like to see is as follows:


    string = foo bar

    The actual output I'm seeing is the following:


    string = foo\nbar

    Is there a way to have the '\n' interpreted as an actual newline character by the perl script? I've tried enclosing the string in single and double quotes, and using 1-3 backslash escapes on the 'n' character but none of those work.

how do you determine which module needs to be updated while using perlbrew?
5 direct replies — Read more / Contribute
by Anonymous Monk
on Jul 31, 2025 at 22:41
    I'm using perlbrew, recently installed 5.42 using "perlbrew install stable". Now some programs don't work any more. For example, the error message says the version doesn't match for XS.c. How do you find out which module it means?
    perl -E 'use namespace::clean' Perl API version v5.40.0 of XS.c does not match v5.42.0
    perl -v This is perl 5, version 42, subversion 0 (v5.42.0) built for x86_64-li +nux Copyright 1987-2025, Larry Wall
    i tried looking in ~/.cpan/work to find a XS.c file, found one in the build for List::MoreUtils::XS. try to get cpanm to install List::MoreUtils and it provides the error as the reason it can't install:
    Checking whether perlapi is accessible... Perl API version v5.40.0 of +XS.c does not match v5.42.0-> N/A -> FAIL Configure failed for List-MoreUtils-0.430.
Purpose of the "caret" character in "qr" regex output
2 direct replies — Read more / Contribute
by roho
on Jul 30, 2025 at 21:09
    My environment: Perl 5.24.1 on Windows 10.

    The following SSCCE uses the "qr" operator to quote a string as a regular expression. The non-capturing part of the regex curiously has a "caret" inserted between the question mark and the colon. I've looked and can find no explanation or example of what the "caret" does in the regex produced by "qr". The "caret" does NOT (thankfully) anchor the regex at the beginning of the line, so what does it do?

    #!/usr/bin/perl use strict; use warnings; my $text = 'abcd'; my $regex = qr/$text/; print "\n\$text = |$text| \$regex = |$regex|\n\n"; __END__ Output: $text = |abcd| $regex = |(?^:abcd)|

    "It's not how hard you work, it's how much you get done."

Win32 unthreaded perl builds: To USE_MULTI or not ?
3 direct replies — Read more / Contribute
by syphilis
on Jul 30, 2025 at 07:55
    In the past, when I've built unthreaded perls on MSWindows, they have been built without defining USE_IMP_SYS and without defining USE_MULTI. There was no readily available option to do otherwise.
    However, as of a few days ago, building unthreaded bleadperl with both USE_MULTI and USE_IMP_SYS defined has been facilitated.

    Which option do I want ? Do I want (unthreaded) MSWin32-x64-multi or do I want (unthreaded) MSWin32-x64-perlio ?
    What are the pros and cons ?

    Cheers,
    Rob
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

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.