#!/usr/bin/perl use strict; use warnings; package FunWithStrings; use overload; sub string_const { my $type = shift; print "$type constant [", join('] [', @_), "]\n"; return $_[1]; } sub qr_const { unshift @_, 'qr'; goto &string_const; } sub q_const { unshift @_, 'q'; goto &string_const; } sub import { overload::constant(qr => \&qr_const, q => \&q_const); } sub unimport { overload::remove_constant(qr => \&qr_const, q => \&q_const); } 1;