perl - 找出哪些脚本正在调用 perl 包

标签 perl

如果这很明显,我不是 perl 程序员,所以很抱歉。我正在使用的系统上有一个我想修改的 perl 包,但我不知道有哪些其他程序在使用它。我可以看出至少有三个 cron 作业使用它,因为我将这些行放入文件中:

open(STDOUT, '>', "/var/log/SS_logs/packageAlert.log");
open(STDERR, '>', "/var/log/SS_logs/packageAlert.error.log");

print "\nThe program packageAlert.pm  is running on " . `date` . "\n";
10 分钟后,我的日志中出现了三行。可能会有更多人每天或每周调用它,也可以在网页中调用它。
我用 搜索了包的出现grep -R "SS::alert"。 所以要知道有 20 个左右的脚本和网页可能会使用这个包。
有没有我可以调用的函数来找出哪个文件调用了包?

最佳答案

caller函数可以告诉您调用您的文件(这与让 modulinos 工作的事情相同)。

use v5.10;
say "Loading " . __FILE__ . " at " . localtime();

use File::Spec::Functions qw(rel2abs);
my $calling_file = rel2abs( (caller(0))[1] );

say "Loaded by $calling_file";
1;

关于perl - 找出哪些脚本正在调用 perl 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66607785/

相关文章:

linux - 如何采用成对的线并连接起来?

Perl die() 调用神秘地没有死

perl - 为什么我安装 Perl Module Statistics::Multtest 失败?

perl - 使用严格的 subs 时不允许设置裸字环境变量

perl - 如何在 Perl 中在运行时加载模块?

perl - Moose OOP 还是标准 Perl?

perl - 将 "file name"从文本文件传递到命令行,其中文件的每一行都是文件名

arrays - 为什么 Time::HiRes::stat 打破列表下标?

linux - 将小时字段增加 5(UTC 到 EST 格式)

mysql - bash 如何将 for 循环输出打印成一行?