gpt4 book ai didi

perl - 如何获取当前运行的 Perl 脚本的名称?

转载 作者:行者123 更新时间:2023-12-04 07:34:18 24 4
gpt4 key购买 nike

我有一个脚本

#!/usr/bin/env perl

use strict;
use warnings FATAL => 'all';
use feature 'say';
use autodie ':default';
use mwe 'tmp';

tmp();

调用 Perl 模块 mwe

use feature 'say';
package mwe;
use Cwd 'getcwd';
use Exporter qw(import);
our @EXPORT = qw(tmp);

sub tmp {
say 'written by ' . getcwd() . '/' . __FILE__;
}
1;

但是当我运行这个脚本时,文件名出现在模块中:

con@V:~/Scripts$ perl mwe.pl
written by /home/con/Scripts//home/con/perl5/perlbrew/perls/perl-5.34.0/lib/5.34.0/mwe.pm

我在编写模块方面还是个新手,所以如果我的最小工作示例写得不好,欢迎提出批评。

我的问题:我知道我可以将文件 /home/con/Scripts/mwe.pl 作为参数传递给子例程 tmp,但是有什么方法可以获取像 tmp 这样的子程序来自动返回脚本文件名?

最佳答案

使用

use FindBin qw( $RealScript );
say $RealScript;

use Cwd qw( abs_path );
say abs_path($0);

大多数时候,人们实际上想要脚本所在的目录。为此,使用

use FindBin qw( $RealBin );
say $RealBin;

use Cwd qw( abs_path );
use File::Basename qw( dirname );
say dirname(abs_path($0));

关于perl - 如何获取当前运行的 Perl 脚本的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67812260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com