Skip to content


Subversion checkout URL

You can clone with
Download ZIP


Exclude functions from importing #11

berekuk opened this Issue · 5 comments

4 participants


It would be nice to have a syntax for importing "all functions except one". does this with '!' syntax, but unfortunately it's already taken by autodie::hints.
How about '-'?
So, use autodie qw(:all -read) would import everything except read.

This effect is hard to achieve by other means, see for my attempts to avoid prototype conflicts with a method named read.


I'm currently at YAPC, but just as a quick check, does the following work for you?

use autodie;
no autodie qw(read);

No, it removes my method for some reason:

mmcleric@domU-12-31-39-0A-60-DD:~$ cat
package X;

use strict;
use warnings;

use autodie;
no autodie qw(read);

sub read {
    print "foo\n";

mmcleric@domU-12-31-39-0A-60-DD:~$ perl -e 'use X; X->read'
Can't locate object method "read" via package "X" at -e line 1.

I hit this as well (have a module with a connect() method that is getting clobbered).
I'd like what berekuk suggested would be great.

use autodie qw/ :all -connect /;


Oh, dang.

I agree, autodie qw/ :all -connect /; would be great.

In the tradition of short responses, I'm on the way to KiwiFoo right now, but nudging me in 6-7 days time should reach me in a quiet spot. Alternatively, if you fancy a patch to Fatal::_translate_import_args, I'd be delighted to receive it (especially if it comes with test cases)!

~ pjf


I did a bit more poking around and I see what's happening. autodie is doing its work before the user-supplied method is defined which is why unimport is failing. Here's an ugly work-around:

#!/usr/bin/env perl

package Foo;

use strict;
use warnings;

  require autodie;

sub connect {
  warn "MY CONNECT!\n";


With that, we're delaying the autodie setup until after the rest of the code has been defined, which allows unimport to work as expected.

I'll look at putting together a patch for the -connect syntax. There's no way to have autodie automatically delay it's execution until the current file is compiled, is there?

@nthykier nthykier added the wishlist label
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.