From 10fdf7690edfb3cbf35e4da4f5d5f802fbc315d2 Mon Sep 17 00:00:00 2001 From: James Raspass Date: Wed, 17 Sep 2025 00:39:02 +0100 Subject: [PATCH] Modernise overloading pragma a little - Move the version declaration into the package line. - Use v5.40 to get strict, warnings, and the module_true feature. - Make private sub lexical, it's unlikely to be used in darkpan. - Make use of subroutine signatures. --- lib/overloading.pm | 24 ++++++++---------------- lib/overloading.t | 9 +++------ 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/lib/overloading.pm b/lib/overloading.pm index c7622270c926..3189434d2f99 100644 --- a/lib/overloading.pm +++ b/lib/overloading.pm @@ -1,27 +1,22 @@ -package overloading; -use warnings; +package overloading 0.03; -our $VERSION = '0.02'; +use v5.40; my $HINT_NO_AMAGIC = 0x01000000; # see perl.h -require 5.010001; - -sub _ops_to_nums { +my sub ops_to_nums (@ops) { require overload::numbers; map { exists $overload::numbers::names{"($_"} ? $overload::numbers::names{"($_"} : do { require Carp; Carp::croak("'$_' is not a valid overload") } - } @_; + } @ops; } -sub import { - my ( $class, @ops ) = @_; - +sub import ($, @ops) { if ( @ops ) { if ( $^H{overloading} ) { - vec($^H{overloading} , $_, 1) = 0 for _ops_to_nums(@ops); + vec($^H{overloading} , $_, 1) = 0 for ops_to_nums(@ops); } if ( $^H{overloading} !~ /[^\0]/ ) { @@ -34,12 +29,10 @@ sub import { } } -sub unimport { - my ( $class, @ops ) = @_; - +sub unimport ($, @ops) { if ( exists $^H{overloading} or not $^H & $HINT_NO_AMAGIC ) { if ( @ops ) { - vec($^H{overloading} ||= '', $_, 1) = 1 for _ops_to_nums(@ops); + vec($^H{overloading} ||= '', $_, 1) = 1 for ops_to_nums(@ops); } else { delete $^H{overloading}; } @@ -48,7 +41,6 @@ sub unimport { $^H |= $HINT_NO_AMAGIC; } -1; __END__ =head1 NAME diff --git a/lib/overloading.t b/lib/overloading.t index 4deace9253ad..ece8de0c7c22 100644 --- a/lib/overloading.t +++ b/lib/overloading.t @@ -1,13 +1,10 @@ #./perl -use Test::More; - -no warnings 'experimental::builtin'; -use builtin qw(refaddr); +use v5.40; -{ - package Stringifies; +use Test::More; +package Stringifies { use overload ( fallback => 1, '""' => sub { "foo" },