Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Perl News

( #23771=superdoc: print w/replies, xml ) Need Help??

For the latest news on what's happening in the Perl world, check out these sites:

If you have a Perl-related news item you'd like to share, you may post it in the Perl News section. Please try to avoid duplicating news; but pointers (with summaries) to important stories on other sites are acceptable here.

Perl News
StackOverflow blog: This is not your grandfather's Perl
2 direct replies — Read more / Contribute
by mr_mischief
on Sep 12, 2022 at 15:57
Stackoverflow blog: Why Perl is still relevant in 2022
3 direct replies — Read more / Contribute
by NetWallah
on Jul 07, 2022 at 11:28
    Girish Venkatachalam has blogged "Why Perl is still relevant in 2022" on July 6, 2022.

    No new info there - it is interesting only because it purports to be positive for perl, is published on SO, and showed up on my Google news feed.

    The author seems to have somewhat dated knowledge of perl and no knowledge of raku.

                    "These opinions are my own, though for a small fee they be yours too."

Admins for RT
1 direct reply — Read more / Contribute
by hippo
on Jul 05, 2022 at 15:02

    TPF is calling for volunteers to assist with the administration of, specifically to help with keeping it free from spam. If you have the necessary time, skill and inclination please consider supporting this.


Recordings for TPC 2022 in Houston
No replies — Read more | Post response
by LanX
on Jun 27, 2022 at 06:12
Recordings of the German Perl/Raku Workshop 2022 in Leipzig
1 direct reply — Read more / Contribute
by Corion
on Jun 21, 2022 at 13:53

    During the last days, we reviewed and cut the video recordings. The recordings are now available on the media platform of the CCC:

    Some of the presentations are not yet published - we need to work on the video some more..

    Again, thanks to our speakers, our sponsors and everybody else for the great conference. Next year we'll hopefully meet again in Frankfurt am Main in person!

2022 Prospectus from TPF
No replies — Read more | Post response
by talexb
on Jun 15, 2022 at 15:33


    I've been working on the development of a Prospectus for the TPF as a way of communicating all the good work that TPF is doing to support Perl, and you can read all about it here. There were lots of people who worked on this, and I'm really thrilled with the way it turned out.

    PS I'll be at TPRC in Houston next week -- maybe I'll see some of you there. :)

    Alex / talexb / Toronto

    Thanks PJ. We owe you so much. Groklaw -- RIP -- 2003 to 2013.

PDL 2.079 released
No replies — Read more | Post response
by etj
on May 03, 2022 at 16:44
    PDL 2.079 has just been released. Notable changes since 2.078: Future plans, in something like intended order:
    • Restructure the TriD stuff so there is a consistent API between OpenGL and X3D/VRML - see 11143037 for more
    • fix more open GitHub issues
    • add event-handling hooks for ndarrays - see PDL::Dataflow for more
    • finish the independent C interface for making PDL usable from e.g. Python - see for more
    • “loop fusion” techniques to maximise locality of computation, minimising data’s trips through the “straw” between CPU and main RAM
    • use OpenCL or other means to also utilise GPUs if available - see for more on this and the above

    Please give the new release a try and report problems. website updated
1 direct reply — Read more / Contribute
by etj
on Apr 15, 2022 at 12:16
    I've just (hopefully) finished tweaking the website at, using Joel Berger's JavaScript-based update, enabling HTTPS by hosting on GitHub Pages. The search now uses MetaCPAN which has a neat autocomplete feature.

    I've probably missed some stuff so please have a nose around and open issues on or use the “Website issues” link in the sidebar (which links to that) - or reply on here!

    As usual, please give the new website a try and report problems.

PDL 2.078 released
No replies — Read more | Post response
by etj
on Apr 10, 2022 at 18:46
    PDL 2.078 has just been released. Notable changes since 2.077:
    • TriD::GL now more resilient and exceptions don't leave GL broken
    • Bugfixes including to NiceSlice
    • demo 3d now shows off a 3D Earth (with accurate shading), and also a 3D molecule-like graph evolving over time
    • The pdl struct now has room for a single value (or if not complex long double, several values of smaller datatypes), avoiding extra memory-management for small ndarrays – but you don’t need to recompile installed modules

    The IRC channel (#pdl on is a great virtual place to come and ask questions, or just watch the GitHub messages flow by.

    Please give the new PDL a try and report problems.

PDL::LinearAlgebra 0.27 released
1 direct reply — Read more / Contribute
by etj
on Apr 06, 2022 at 13:13
    PDL::LinearAlgebra 0.27 has just been released. Notable changes since 0.26:
    • Much broader testing of the wrapper functions e.g. msolve, with many fixes
    • A number of memory-management and other bugs are fixed, helped by the above
    • Those wrapper functions now work in a natural way with “native complex” numbers, so long as you don’t load PDL::Complex at all – they still work with PDL::Complex if you do load it
    Zaki’s amazing CI work continues to be immensely valuable in keeping the “PDLverse” ever-more stable. Thanks, Zaki!

    I’m strongly considering actually removing PDL::Complex support from PDL::LinearAlgebra, because it does add a fair bit of quite awkward code. Please express an opinion if you have one! It won’t be immediate because I’d want to lift out some of Greg’s nice patching of PDL::Complex into main-PDL’s PDL::Complex, and I haven’t done that yet.

    Future ideas:

    • Use Devel::CheckLib to ensure LAPACK is installed
    • Be more available on Windows by using a still-to-be-created Alien::LAPACK
    • Use ExtUtils::F77 to better detect trailing “_” on routine names, and use the technique from PDL::Slatec/Minuit to wrap that
    • Make a somewhat-visual demo of this linear algebra stuff using the new plugin-based demo system – ideas welcome!
    The IRC channel (#pdl on is a great virtual place to come and ask questions, or just watch the GitHub messages flow by.

    As usual, please give the new release a try and report problems.

Possible security problem in CPAN modules / CVE-2018-25032
2 direct replies — Read more / Contribute
by cavac
on Mar 31, 2022 at 07:19

    Dear fellow Perl developers,

    zlib, the compression library (also known as libz, deflate, compress on various systems) has a major flaw. While the bug is 17 years old, it only got attention in the last few days and weeks.

    It even has a backdated CVE, because the bug was discovered years ago, but not fixed: CVE-2018-25032

    See also:

    It is known that this can cause at least denial-of-service attacks, but RCE (remote code execution) is not entirely out of the cards to my knowledge.

    I have done a casual grep through my local CPAN mirror (yay for local mirrors!), which has given me a list of potentially vulnerable modules. There are over 90 of them. Yes, there are probably a few false negatives and a few false positive, as i didn't have time to go over each distribution in detail.

    Please check your CPAN distributions for any use of zlib.c, libz.c, deflate.c, compress.c and similar variants and update as necessary. If at all possible, i would also recommend to switch to either the zlib provided by the operating system or at least coordinate with other CPAN authors to reduce the number of static copies of the zlib libraries spread all over CPAN modules.

    The basic problem with distributing your own copy of a library like that is simple: Instead of it getting automatically updated with security fixes by the operating system or distribution vendor, it is up to YOU to track the library and provide security updates for your CPAN distributions. And you have to get the users to somehow not only update the operating system, you also have to get them to update their installed perl modules. While providing your own copies of C libraries is convenient, provides safety against incompatibilities with locally installed libraries and so on, in case of a security problem this can place a lot of extra burdens on the end user of your code. They suddenly have to go through every installed perl module, plus all the other non-perl programs to make their system secure again.

    Perl isn't the only software environment that has this problem. Many other things also maintain local copies of these kinds of "simple but essential" libraries in their source code control. The list of potentially vulnerable programs is quite impressive. So far, i've seen mention (but have not confirmed it myself) of Chromium, Firefox, ImageMagick, Gimp, VLC, the Linux kernel among quite a few other programs. This stems from the fact the zlib/the deflate algorithm is used in, for example, the HTTP protocol and PNG image files.

    Because the number of modules NOT using the zlib library installed with the operating system but instead using a static/local copy of the C-Files, a security problem like this (or worse) can take a long time to fix. It is up to all of us to work together and reduce the number of copies of potentially vulnerable code.

    Thanks in advance for your help in solving this security problem.


    Rene "cavac" Schickbauer

    perl -e 'use Crypt::Digest::SHA256 qw[sha256_hex]; print substr(sha256_hex("the Answer To Life, The Universe And Everything"), 6, 2), "\n";'
I have finally done it; wrote a Tesla API library for Perl!
2 direct replies — Read more / Contribute
by stevieb
on Mar 18, 2022 at 18:20

    For several years, I spent much time writing code for the Raspberry Pi, including hardware level register C code so that we can use various Integrated Circuit chips and sensors with Perl.

    A couple of years ago, I acquired much larger and much more expensive toy, an all-wheel drive, full auto-pilot Tesla Model-X SUV, so of course, I want to write Perl code to access and manipulate it.

    In the ensuing two years, I developed several microcontroller-based devices for the car, including one that knows where the car is, and its battery charge and state, and dispslays this information via an LED light strip and an OLED screen inside of my garage, along with an audible alarm that sounds for 1/8th of a second every three seconds if the battery is below a certain threshold so I don't forget to plug the charger in.

    The microcontroller speaks to a Raspberry Pi who's job it is to fetch data from the Tesla API for my car, and to present that data to the microconroller, over Wifi. The software on the Pi is of course written in Perl, but because I couldn't figure out how to write the Tesla API authentication mechanism in Perl, I used Tim Dorssers TeslaPy Python library, and wrapped it for those calls.

    Not anymore! We can now talk to the Tesla API via Perl!

    I've officially released Tesla::Vehicle, which inherits from my other new related distribution, Tesla::API.

    Upon first attempt to fetch data from Tesla, we will generate a URL that you must browse through to in a browser, authenticate into your Tesla account, and then paste back the ensuing URL you are redirected to into the console. After that, all access tokens are automatically used and updated when needed. My software never has any access or knowledge of your Tesla account credentials, which is the way I wanted this designed.

    Thereafter, it's clear sailing!

    The documentation is pretty elaborate about what the software can do so please check it out. For Tesla::Vehicle, there are methods to access aggregate data, sections of the aggregate data, and for several specific attributes that I use myself, I've added methods for them directly. More will be added as time goes on.


    • Built-in initial access token generation code with prompts of instructions
    • Automatic access token renewal
    • Single method (api()) to access data from endpoints that don't yet have a direct method
    • Built in modifiable data cache (set to 2 second timeout by default) to reduce calls to Tesla for data already retrieved (cache can be disabled)
    • Consistent data return values... for data aggregate methods, all data is returned as a hash reference
    • Near feature complete; most data has at least an aggregate fetch method, many individual attributes have accessor methods
    • Ability to wake the car from sleep (wake()). For calls that require the car to be awake, you can set auto_wake and we'll wake the car ourselves (disabled by default)
    • Many Tesla API calls require a vehicle ID sent in. We do our best to get this ourselves, otherwise it can be sent into new() or id()

    Todo: The main one is adding methods that allow control of the functionality of the car. The only one implemented thus far is wake(). I'll also be adding more direct attribute retrieval methods. For now, use the aggregate methods and pull the data out of the return values yourself. There are also a few minor issues, primarily related to the handling of Tesla API timeouts.

    How 'bout some code and output:

    use warnings; use strict; use Tesla::Vehicle; my $car = Tesla::Vehicle->new(auto_wake => 1); printf( "My Tesla account has my car registered with the name '%s'.\n", $car->name ); printf( "My car is in gear %s and is currently going %d MPH and my odomete +r is %d\n", $car->gear, $car->speed, $car->odometer ); printf( "My latitude is %f, longitide is %f, my heading is %d degrees and +its using %.2f kWh/mile\n", $car->latitude, $car->longitude, $car->heading, $car->power ); printf( "My dashcam is %s, sentry mode is %s and I %s currently near my ve +hicle\n", $car->dashcam, $car->sentry_mode ? 'enabled' : 'disabled', $car->user_present ? 'am' : 'am not' ); printf( "My battery is at %d%%, and is %s charging at %.2f volts pulling % +.2f Amps\n", $car->battery_level, $car->charging_state ? 'currently' : 'not', $car->charger_voltage, $car->charge_actual_current ); if ($car->battery_level >= $car->charge_limit_soc) { print "The charger is connected but disabled due to set maximum ch +arge level reached\n"; } printf( "My steering wheel warmer is %s, passenger seat warmer is %s, and +Bio Weapon mode is %s\n", $car->heater_steering_wheel ? 'on' : 'off', $car->heater_seat_passenger ? 'on' : 'off', $car->bioweapon_mode ? 'on' : 'off' ); printf( "The temperature inside the car is %dC and outside it's %dC, and c +limate control is %s\n", $car->temperature_inside, $car->temperature_outside, $car->is_climate_on ? 'on' : 'off' );


    My Tesla account has my car registered with the name 'Dream machine'. My car is in gear P and is currently going 0 MPH and my odometer is 49 +066 My latitude is XX.XXXXXX, longitide is -XXX.XXXXXX, my heading is 229 +degrees and its using 0.00 kWh/mile My dashcam is Unavailable, sentry mode is disabled and I am not curren +tly near my vehicle My battery is at 94%, and is currently charging at 0.00 volts pulling +0.00 Amps The charger is connected but disabled due to set maximum charge level +reached My steering wheel warmer is off, passenger seat warmer is off, and Bio + Weapon mode is off The temperature inside the car is 17C and outside it's 13C, and climat +e control is off
PDL 2.077 released
No replies — Read more | Post response
by etj
on Mar 16, 2022 at 09:30
    PDL 2.077 has just been released. Notable changes since 2.075:
    • Performance improvements for Primitive::matmult
    • Performance fix under Perl ithreading (thanks marioroy)
    • Many bugfixes
    • PDL::Demos now a plugin system, so pdl> demo will only list available ones and anyone can make one
    • perldl now handles Ctrl-C properly and doesn’t lose history with OpenGL
    • TriD demos now work correctly and look better - try them with demo 3d
    A particular “non-functional” improvement, not mentioned above, is the amazing further development of the continuous integration (CI) by the mighty Zaki Mughal: now, on every single commit, not only is the entire library tested to ensure it is internally consistent, but the entire known “PDLverse” on CPAN is tested with that PDL. This opens the door to a new era of stability. Thanks, Zaki!

    As usual, please give the new PDL a try and report any problems.

Thank you, Perl
No replies — Read more | Post response
by choroba
on Feb 14, 2022 at 10:44
    Luca Bonissi answers the question "Who would you like to say thank you to?" at I Love Free Software Day.

    map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
OpenGL::GLUT 0.72 released
No replies — Read more | Post response
by etj
on Jan 09, 2022 at 16:55
    OpenGL::GLUT 0.72 has just been released. It now lets you specify a glutCloseFunc, to gracefully handle the window being closed.

    It now lives on GitHub under the Perl-GPU organisation. This is intended to be a home for all Perl libraries that help you use your GPU.

    Come join #pogl on and be part of the conversation!

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

  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or or How to display code and escape characters are good places to start.
Log In?

What's my password?
Create A New User
Domain Nodelet?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2022-10-05 11:19 GMT
Find Nodes?
    Voting Booth?
    My preferred way to holiday/vacation is:

    Results (23 votes). Check out past polls.