use strict; use warnings; use Mail::Mailer; package Mail::Mailer; my $basic_new; BEGIN{ $basic_new = *Mail::Mailer::new{CODE}; } sub new($@){ my @args = @_; $args[1] = 'testfile';# override type passed in use Data::Dumper; print Dumper \@args; return $basic_new->(@args); } package main; my $m = Mail::Mailer->new('smtp'); $m->open({To => 'me@here.com'}); print $m "hi\n";