App-Music-ChordPro
view release on metacpan or search on metacpan
lib/ChordPro/Paths.pm view on Meta::CPAN
my $i = 0;
@found = ( "<none>" ) unless @found;
warn("Paths: findresdirs[",
$opts{class} ? "$opts{class}:" : "",
$i++, "]",
" $p => ", $self->display($_), "\n") for @found;
}
return \@found;
}
# Return the name of a sibling (i.e., same place, different name
# and/or extension).
method sibling ( $orig, %opts ) {
# Split.
my ( $v, $d, $f ) = fn_splitpath($orig);
my $res;
if ( $opts{name} ) {
$res = fn_catpath( $v, $d, $opts{name} );
}
else {
# Get base and extension.
my ( $b, $e ) = $f =~ /^(.*)(?:\.(\w+))$/;
# Adjust.
$b = $opts{base} if defined $opts{base};
$e = $opts{ext} if defined $opts{ext};
# New file name.
$f = $b;
$f .= $e if defined $e;
# Join with path.
$res = fn_catpath( $v, $d, $f );
}
warn("Paths: sibling $orig => ", $self->display($res), "\n")
if $self->debug;
return $res;
}
# Given a file and a name, try name as a sibling, otherwise look it up.
method siblingres ( $orig, $name, %opts ) {
return unless defined $orig;
my $try = $self->sibling( $orig, name => $name );
my $found = ( $try && fs_test( s => $try ) )
? $try
: $self->findres( $name, class => $opts{class} );
return $found;
}
method packager_version {
return unless $packager;
$ENV{uc($packager)."_PACKAGED"};
}
################ Export ################
# For convenience.
use Exporter 'import';
our @EXPORT;
sub CP() { __PACKAGE__->get }
push( @EXPORT, 'CP' );
1;
( run in 0.536 second using v1.01-cache-2.11-cpan-4ab04211f4c )