Path::Classでnew_absみたいな
ファイルシステムだから、単純にはいかないのだけれども、URIのnew_absの様なものが欲しい時がある。
Path::Classなら、両方ファイルだとして、
my $abs = Path::Class::file( Path::Class::file($base)->dir, $path );
ってやればできる。
File::Specなら
my $abs = File::Spec->rel2abs( $path, $base );
むしろこっちの方が単純だったか。。
↓上を利用してYAMLで外部ファイルをinclude
use YAML; use Path::Class; sub LoadFile { my $file = shift; &_loadfile({}, $file ); } sub _loadfile { my $args = shift; my $file = Path::Class::file( @_ ); my $hashref = YAML::LoadFile($file); if ( $hashref->{include} ) { die "'include' must be array or scallar" if ( ref $hashref->{include} && ref $hashref->{include} eq "HASH"); $hashref->{include} = [ $hashref->{include} ] unless ref $hashref->{include}; my %include_hash; foreach my $include ( @{ delete $hashref->{include} } ) { my $include_hash = &_loadfile( $args, $file->dir, $include ); %include_hash = ( %include_hash, %$include_hash ); } $hashref = { %include_hash, %$hashref }; } return $hashref; }