New here?I want to ask a question of the Perl Monks. Where do I start?

Notices:

hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.

If you're new here, please read PerlMonks FAQ
and Create a new user!

Quests
poll ideas quest 2026
Starts at: Jan 01, 2026 at 00:00
Ends at: Dec 31, 2026 at 23:59
Current Status: Active
0 replies by pollsters
    First, read How do I create a Poll?. Then suggest your poll here. Complete ideas are more likely to be used.

    Note that links may be used in choices but not in the title.

Perl News
London Perl and Raku Workshop 2026 goes from Maybe to Likely
on Apr 27, 2026 at 09:01
0 replies by choroba
    The announcement

    Our love of Perl and Raku, means another London Perl and Raku Workshop is presently in the works for November 2026, with an exact date and venue to be confirmed in due course.

    map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
Linuxlinks on Perl Static Site Generators
on Feb 20, 2026 at 05:14
0 replies by mldvx4
Supplications
Regex question - identify which pattern comes first
2 direct replies — Read more / Contribute
by harangzsolt33
on May 01, 2026 at 20:12
    I feel like I have learned a lot in the past 10 years since I started learning Perl, but I still probably don't know more than half of what's possible using regex. I have often come across situations where I needed to identify which pattern occurs first in a string. So, I am not trying to capture a part of the pattern nor am I trying to identify if it occurs at all or where. I am just trying to figure our which of the possible patterns is FIRST in the string. For example:

    Sample string: "AB ABDA DCACCB AAA BSAA CAAB ACS ABA DBA BA DASSABACA +A" I'm looking for either: BA[ABC]{2} OR CA[CD]{2} OR DA[SC]{2} So, I would write: /BA[ABC]{2}|CA[CD]{2}|DA[SC]{2}/

    Is there a way to get a return value of 1, 2, or 3 depending on which pattern was matched first? How would I do that?

Interpolate variable into regexp at time of definition rather than execution, as a filter for Path::Iterator::Rule
2 direct replies — Read more / Contribute
by ecm
on Apr 27, 2026 at 15:27

    I am attempting to use a Path::Iterator::Rule "Custom rule subroutine".

    I have a regexp during the buildup of my rules, which determines whether the custom rule subroutine is used. If it indicates to use the subroutine, then its capture group $1 at this point holds some text that I want to match in the subroutine to filter for certain pathnames.

    With the naive approach, it seems that the $1 or $var variable in my regexp is only expanded at the time of the regexp/subroutine being run. At this point, the variable is no longer valid and could have been overwritten by some other value. Naive code:

    my $rule = Path::Iterator::Rule->new; if ($id =~ /^([0-9A-F]{2})/) { my $int = $1; $rule->and( sub { m#/INT $int# } ); }

    Resulting errors are many times this line:

    Use of uninitialized value $int in regexp compilation at [redacted]/proj/intlist/intlist.pl line 1167.

    I found that it appears to work if I use a "postponed" regular subexpression like so:

    my $rule = Path::Iterator::Rule->new; if ($id =~ /^([0-9A-F]{2})/) { my $int = $1; $rule->and( sub { m#/INT (??{ "$int" })# } ); }

    Is this a correct approach? Are there other ways to interpolate a variable at the time of adding the custom rule subroutine, so that the rule doesn't refer to the variable later but rather uses the text that it used to hold?

Meditations
Healing Debian Perl (and whatever else is broken out there)
1 direct reply — Read more / Contribute
by Anonymous Monk
on May 01, 2026 at 07:15
    Apparently some package installers on some systems like Debian fail to create .packlist files for installed modules! This policy oversight breaks critical parts of the perl toolchain that depend on core utilities like ExtUtils::Installed. Has anyone in the past ~25 years this has been the case written a program that heals these broken installations by traversing @INC and automagically manufacturing any missing .packlist files? Seems like a neat project for me or one of you Perl professionals but I wouldn't want to reinvent any wheels. Thanks

    Date: Wed, 4 Dec 2002 17:06:17 +0100
    Debian-Perl-Policy and .packlist?
    lists.debian.org/debian-policy/2002/12/msg00009.html

    Date 2012-01-17T18:06:02
    Debian Bug report logs #656242 perl: .packlist file missing
    bugs-devel.debian.org/cgi-bin/bugreport.cgi?bug=656242

    PS - Also wonder if they fail to install MYMETA.json and install.json and the bundle files?

    # archlib: The core .packlist perl -MConfig -e 'print `ls -la "$Config{archlib}/.packlist"`' perl -MConfig -e 'print `cat "$Config{archlib}/.packlist"`' # archlib/auto: dist/bundle perl -MConfig -e 'open $pipe, qq[ls -la "$Config{archlib}/auto" |];pri +nt while <$pipe>' # sitearch/auto: dist/.packlist perl -MConfig -e 'open $pipe, qq[ls -la "$Config{sitearch}/auto" |];pr +int while <$pipe>' # sitearch/.meta: dist/install.json and dist/MYMETA.json perl -MConfig -e 'open $pipe, qq[ls -la "$Config{sitearch}/.meta" |];p +rint while <$pipe>'
PerlMonks Discussions
Moving the site behind a CDN
3 direct replies — Read more / Contribute
by Co-Rion
on Apr 26, 2026 at 04:43

    Thanks to main work by Leo Lapworth and Olaf Alders at the Perl Toolchain Summit, we now have a setup that allows us to move the site behind a CDN ( https://www.fastly.com/ in fact ). Fastly does not require magic Javascript to execute on the clients, but will ideally still help to stem the deluge of scrapers. Together with this, there will be some likely changes:

    The site will only be available under perlmonks.org. The other domains will issue HTTP redirects to that address. This means that you will have to check the hostnames in your tools and in your browsers. Using the hostnames to differentiate between user profiles will not work anymore.

    The site pages will be cached for Anonymous Monk. We'll start out with a cache duration of 1 hour but will likely increase this. Fastly has an API, so maybe busting the cache for recently updated threads is possible. If you are polling Perlmonks without a login, you will likely see a more static response.

    The timeline to move the site behind Fastly is to do it is likely in the next two to four weeks, depending on the availablility of myself and others.