#!/usr/bin/perl
{
    package Hoge;
    use strict;
    use warnings;

    sub sub1 { print "sub1\n" }
}

{
    package main;
    use strict;
    use warnings;

    no strict 'refs';

    my $hoge1 = *{"Hoge::sub1"};
    $hoge1->();

    my $class = 'Hoge';
    my $hoge2 = *{"$class::sub1"};
    $hoge2->();
}

# 前者が上手くいき、後者が上手くいかない理由と、
# 後者の代替となる方法を教えて頂けないでしょうか?