1
perl 5.44 (linuxiac.com)
submitted 3 months ago by to c/perl@programming.dev
 
 

Perl 5.44 has been released, bringing several experimental and compatibility changes:

  • Named parameters in subroutine signatures (e.g., sub foo ($name, :$email)) are now supported, allowing callers to pass arguments as name‑value pairs.
  • Combines multi‑variable foreach loops with reference aliasing, enabling loops over key‑array pairs while aliasing the array.
  • Enhances the /xx regex modifier: allows multi‑line, commented character classes, but now deprecates unescaped # or vertical whitespace inside bracketed classes, emitting warnings.
  • Unicode 17.0 support tightens identifier rules; about 160 characters previously accepted under \w are rejected because they don’t meet XID_Start/Continue properties.
  • Security fixes for three CVEs (2026‑8376, 2026‑57432, 2026‑13221) addressing buffer‑overflow risks in Perl_study_chunk, large pack/unpack structures, and regex trie optimization.
  • Changes the PRNG seeding on Linux, BSD, macOS to prefer getentropy(), then /dev/urandom, then an internal hash; still not suitable for cryptographic use.
  • Performance tweaks speed up non‑overflowing integer arithmetic and hash creation from constant string keys; signature processing overhead is reduced.
  • Deprecated goto into a loop/body (since Perl 5.12) is now disallowed.
  • Support for the Perl 5.40 branch ends; the next development release (Perl 5.45.1) is expected soon, with a major stable release slated for early 2027.
2
 
 

I notice that LLMs have a strange way of writing perl.
(strange until you learn it !)

Chaining ternary operators
these seem to be used in places where i would have been more familiar with a simple if/then/else conditional.

Chaining ternary operators for compact conditionals

my $age = 27;       
     
my $category = $age < 13          ? 'child'        
                         : $age < 20          ? 'teen'     
                         : $age < 65          ? 'adult'      
                         :                            'senior';      
      
print "Category: $category\n";           
# Determine a short label for a set of unrelated inputs         
my $label = $age < 13            ? 'child'       
         : $color eq 'red'              ? 'stop'         
         : $count == 0                  ? 'empty'        
         : $mode eq 'debug'        ? 'verbose'         
         : $size > 1000                 ? 'big'         
         : 'default';          
  • When condition is true, the part after the question‑mark, becomes the value of the whole expression.

  • if true, The rest of the chain (other ternary tests) are never evaluated.

  • finally, The final : supplies the fallback value, acting as the “else” case.

  • This one‑liner is useful when you need to assign a value based on a series of mutually exclusive tests without writing explicit if/elsif/else blocks.

3
4
5
6