package foo; sub new { print "I'm in foo::new()\n"; bless {}, 'foo'; } 1; package main; sub foo { print "I'm in main::foo()\n"; } my $o = new foo; __output__ Bareword found where operator expected at - line 17, near "new foo" (Do you need to predeclare new?) syntax error at - line 17, near "new foo"