perl中需要的p4打印命令帮助

perl中需要的p4打印命令帮助,perl,perforce,Perl,Perforce,嗨,我写了一个代码 #/tools/baton/perl/5.12.1/bin/perl 严格使用; 使用YAML; 使用YAML“加载文件”; 使用数据::转储程序; 我的$file_yml; my$path=“//IP2/D21EV/2hw/semi_axi_10g_ethernet/info.yml”; 我的%hash=open(读取,p4打印-q$path |)或die“无法打开”; 打印转储程序(\%hash); 它给了我: $VAR1 = { '39807'

嗨,我写了一个代码

#/tools/baton/perl/5.12.1/bin/perl
严格使用;
使用YAML;
使用YAML“加载文件”;
使用数据::转储程序;
我的$file_yml;
my$path=“//IP2/D21EV/2hw/semi_axi_10g_ethernet/info.yml”;
我的%hash=open(读取,p4打印-q$path |)或die“无法打开”;
打印转储程序(\%hash);
它给了我:

$VAR1 = {

          '39807' => undef

        };

代码中有一些语法错误(缺少双引号),但这可能只是复制粘贴问题

主要的问题似乎是您使用返回的值来填充哈希,但是
open
不返回文件的内容。事实上,如文档所述,如果您使用它来打开管道,它将返回子进程的PID

您需要实际从文件句柄读取,以获取其内容

例如

my%hash;
打开我的$PIPE,'-|',qw(ls-s);
而(){
我的($size,$file)=拆分;
$hash{$file}=$size;
}

我需要打印info.yml文件,它是perforce格式的,每个大文件都有很多键/vaule paris,但在输出时我看到一些数字,可以解释一下这里发生了什么。问题中的代码包含语法错误。请使用右下角的链接来解决您的问题。为什么要使用YAML,然后您就可以修改了你自己只是在读一个文件(使用老式的双参数open和词法filehandle!)还有,什么是
p4
?嗨,choroba,谢谢你的回复,但我不太擅长编码,可以通过一些示例代码来帮助我。@herp:请看和。嗨,谢谢你的回复,但是p4 print命令会将数据打印到上面代码中的粗糙文件中,我之所以这样做是因为我不擅长编程。有些代码片段可能是nice@herp当前位置开始阅读文档的时间。从开始。
my %hash;
open my $PIPE, '-|', qw( ls -s );
while (<$PIPE>) {
    my ($size, $file) = split;
    $hash{$file} = $size;
}