Any Perlmonks users at WHY2025
No replies — Read more | Post response
|
by cavac
on Jul 29, 2025 at 09:30
|
|
|
Not sure this is the right section to put this question in...
I'm going WHY2025 in a couple of weeks. Is anyone else from the monastery going there?
Find me at the Demoscene village, i'll be the one mistreating Linux terminals as graphics displays.
|
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 :
- 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.
- 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.
- 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.
- 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.
- 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...
|
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;
}
|
|