Slide 23
Slide 23 text
IUUQTHJUIVCDPNQFSMEPDKQQFSMEPDKQQVMM
ಉ͡ख๏ͰQFSMEPDKQͰσουίʔυൃݟ
ߦͷআʹޭ
sub extract_used_packages {
my $file = shift;
my @packages;
open my $fh, '<', $file or return ();
while (<$fh>) {
# use Package
if (/^\s*use\s+([\w:]+)/) {
push @packages, $1;
}
# use parent qw/Package1 Package2/
if (/^\s*use\s+parent\s+qw[\/\(]([^\/\)]+)[\)\/]/) {
push @packages, split /\s+/, $1;
}
# use parent 'Package'
if (/^\s*use\s+parent\s+['"]([^'"]+)['"]/) {
push @packages, $1;
}
# Package->method
if (/([\w:]+)->\w+/) {
push @packages, $1 if $1 =~ /::/;
}
}
close $fh;
return @packages;
}