Согласно p6doc 5to6-perlfunc
:
FILE
Заменено на $?FILE
, что немного отличается от __FILE__
в том, что это всегда абсолютный путь , а не относительный в случае Perl 5.
и в соответствии с p6doc CallFrame
:
Без аргументов callframe
даст вам информацию о кадре для строки, вызывающей callframe
.Файловые и строчные аннотации будут такими же, как в $?FILE
и $?LINE
.
Но когда я это проверял, атрибут file
дает относительное имя пути:
. / P.p6 :
use v6;
use Data::Dump::Tree;
use lib '.';
use MyModule;
say 'Main script: package path name : ', $?FILE;
say 'Main script: $*PROGRAM-NAME : ', $*PROGRAM-NAME;
MyModule::func();
. / MyModule.pm6 :
unit module MyModule;
our sub func() {
say "func: This package path name : ", $?FILE;
my $frame = callframe 1;
say "func: Calling package's file name: ", $frame.file;
}
Вывод :
Main script: package path name : /home/hakon/test/perl6/./p.p6
Main script: $*PROGRAM-NAME : ./p.p6
func: This package path name : /home/hakon/test/perl6/MyModule.pm6 (MyModule)
func: Calling package's file name: ./p.p6
Как получить абсолютный путь к единице компиляции вызывающей стороны?