当前位置: 首页 > 面试题库 >

pp(PAR)在哪里解压缩添加(-a)文件?

轩辕煌
2023-03-14
问题内容

这是我试图解决引起的无关问题的尝试:“为什么我的系统调用在用pp包装的Perl程序中不起作用?”
我在Linux系统上创建了一个简单的Perl脚本:

new-net:~/scripts # cat ls_test.pl
@ls_out = `ls -l`;

map { print "$_\n" } @ls_out;

$out = `sh out_test.sh`;

print "$out\n";

该脚本调用一个简单的外壳文件:

new-net:~/scripts # cat out_test.sh
echo "I'm here"

我使用pp将Perl脚本和Shell脚本打包到ls_test中:

new-net:〜/ test#解压-l ls_test
存档:ls_test
  长度日期时间名称
 -------- ---- ---- ----
        0 07-13-09 16:41脚本/
      436 07-13-09 16:41清单
      214 07-13-09 16:41 META.yml
       93 07-13-09 16:41脚本/ls_test.pl
      538 07-13-09 16:41脚本/main.pl
       16 07-13-09 16:20 out_test.sh
 -------- -------
     1297 6档案

如果我在原本为空的目录中运行打包文件,则找不到shell脚本:

新网:〜/ test#./ls_test
总计3391

-rwxr-xr-x 1根根3466177 7月13日16:41 ls_test

sh:out_test.sh:没有这样的文件或目录

如果将外壳程序脚本复制到目录中,则打包的脚本将按预期运行:

新网:〜/ test#./ls_test

总计3395

-rwxr-xr-x 1根根3466177 7月13日16:41 ls_test
-rw-r--r-- 1个根root 13 Jul 13 16:20 out_test.sh

我在这

那么,pp打包脚本希望在哪里找到包含的文件?以及如何在原始Perl脚本中配置对该包含文件的调用?


问题答案:

打包的可执行文件中的文件被提取到一个临时目录(通常是/ tmp / par-USERNAME / cache-
XXXXXXX)。要访问这些文件,请执行以下操作:

#!/usr/bin/perl

# Reads a data file from the archive (added with -a)
print PAR::read_file("data");

# Will execute "script2" in the archive and exit. Will not return to this script.
require PAR;
PAR->import( { file => $0, run => 'script2' } );

您还可以建立与可执行文件具有相同名称的可执行文件的符号链接,然后运行它们。

实际上,重读您的问题,仅访问PAR_TEMP环境变量可能更有用:

#!/usr/bin/perl
use File::Slurp qw(slurp);

$data_dir = "$ENV{PAR_TEMP}/inc";
$script_dir = "$data_dir/script";

print slurp("$data_dir/datafile");

# file html" target="_blank">access permissions are not preserved as far as I can tell,
# so you'll have to invoke the interpreter explicitly.
system 'perl', "$script_dir/script2", @args;


 类似资料:
  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

  • 问题内容: 我想使用Web浏览器在客户端显示OpenOffice文件,.odt和.odp。 这些文件是压缩文件。使用Ajax,我可以从服务器获取这些文件,但是它们是压缩文件。我必须使用JavaScript解压缩它们,我尝试使用inflate.js,http: //www.onicos.com/staff/iz/amuse/javascript/expert/inflate.txt ,但没有成功。

  • 我试图在GoogleColab中解压一个zip文件,我得到了这个错误 存档:object_detection.zip未找到中央目录末尾签名。这个文件不是zipfile,或者它构成一个多部分存档的磁盘。在后一种情况下,中心目录和zipfile注释将在这个存档的最后一个磁盘上找到。解压缩:在object_detection.zip或object_detection.zip.zip中找不到zipfile

  • 问题内容: 任何人都可以向我展示在我一直在搜索的Java中压缩和解压缩tar.gzip文件的正确方法,但是我能找到的最多是zip或gzip(单独)。 问题答案: 我最喜欢的是plexus-archiver-请参阅GitHub上的资源。 另一个选项是Apache commons- compress- (请参阅mvnrepository)。 使用plexus-utils,用于取消存档的代码如下所示:

  • 前面小节介绍了如何对文件和目录删除、移动操作,本小节介绍如何使用命令对文件和目录进行压缩与解压操作,常见的压缩包格式有 .bz2、.Z、.gz、.zip、.xz,压缩之后的文件或目录占用更少的空间。 1. tar 命令介绍 下面列举 tar 命令的参数: tar 命令参数名称 功能与作用描述 -c 新建立压缩档案 -x 解压缩 -t 查看内容 -u 更新原压缩包的内容 -z gzip 属性的 -j

  • Demo示例了如何利用第三方类库 ZipArchive 来解压和压缩.zip文件。Demo的演示过程是:先从网络下载一个.zip文件,然后解压它,最后再进行压缩。 代码的解释文章(英文)是:http://www.icodeblog.com/2012/08/13/unzipping-files-using-zip-archive/ [Code4App.com]