it only works on plain scripts, where subs are in the main package. feel free to enhance it :-)#!/usr/bin/perl use strict; my $F = shift || die "no file specified"; my $xref_cmd = "$^X -MO=Xref,-r $F"; my %subdef; my %subused; my @fields = qw( file context line package sigil name action ); open TMP, "$xref_cmd |"; # Xref mangles up filenames, so we need to binmode it binmode TMP; while(<TMP>) { chomp; my %data; @data{ @fields } = split( /\s+/ ); if( $data{action} eq "subdef" and $data{package} eq "main" and $data{file} eq $F ) { $subdef{ $data{name} } = "$data{file}:$data{line}"; } if( $data{action} eq "subused" and $data{package} eq "main" and $data{file} eq $F ) { $subused{ $data{name} } = "$data{file}:$data{line}"; } } close TMP; foreach my $sub (keys %subdef) { next if exists $subused{ $sub }; print "$subdef{ $sub } $sub\n"; }
cheers,
Aldo
__END__ $_=q,just perl,,s, , another ,,s,$, hacker,,print;
In reply to Re: Warnings for unused subs? here's find_unused_subs.pl!
by dada
in thread Warnings for unused subs
by VSarkiss
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |