Perl-X64bits系统和X32bits系统
我想问一下为什么我的脚本不能在Windowsx64bits系统中工作。此脚本以前在X32bits中工作。但我不知道为什么会出现“无法打开输入文件”这样的错误 在64位系统中没有输出Perl-X64bits系统和X32bits系统,perl,Perl,我想问一下为什么我的脚本不能在Windowsx64bits系统中工作。此脚本以前在X32bits中工作。但我不知道为什么会出现“无法打开输入文件”这样的错误 在64位系统中没有输出 #!/usr/bin/env perl use strict; use warnings 'all'; my $directory = 'D:/Script_Code/Perl/Test/Datalog/Unit_80'; my $testna = 'FW OTP Check UVLO VIN Voltage'
#!/usr/bin/env perl
use strict;
use warnings 'all';
my $directory = 'D:/Script_Code/Perl/Test/Datalog/Unit_80';
my $testna = 'FW OTP Check UVLO VIN Voltage';
my $testpin = 'vrect';
my $testnb = 'FW OTP Checksum Readback';
my $testnc = 'FW OTP Checksum Difference';
my $testnd = 'FW Checksum Pat Pin Fail Count';
my @header = ( 'Unit#', 'Test_Name', 'Pin_Name', 'Measure_Data', 'Upper_limit' );
my $format = "%-8s %-40s %-15s %-15s %-1s\n";
my $outfile = "$directory.sdc";
open (OUT, ">$outfile" );
open (INF, "$directory") || die (" can not open input file \n" );
printf $format, @header;
printf OUT $format, @header;
while ( <INF> ) {
if ( /Device#:\s*(\d+)/ )
{ $unit = $1;
next; }
chomp;
my @fields = split /\s{2,}/;
if ( $fields[2] eq $testna and $fields[3] eq $testpin ) { # TEMP_SENSE_VBE
printf $format, $unit, $fields[2], $fields[3], $fields[5];
printf OUT $format, $unit, $fields[2], $fields[3], $fields[5];
}
if ( $fields[2] eq $testnb ) { # TEMP_SENSE_VBE
printf $format, $unit, $fields[2], $fields[3], $fields[5];
printf OUT $format, $unit, $fields[2], $fields[3], $fields[5];
}
if ( $fields[2] eq $testnc ) { # TEMP_SENSE_VBE
printf $format, $unit, $fields[2], $fields[3], $fields[5], $fields[6];
printf OUT $format, $unit, $fields[2], $fields[3], $fields[5], $fields[6];
}
if ( $fields[2] eq $testnd ) { # TEMP_SENSE_VBE
printf $format, $unit, $fields[2], $fields[3], $fields[5], $fields[6];
printf OUT $format, $unit, $fields[2], $fields[3], $fields[5], $fields[6];
}
}
close (INF) || die "cannot close input file !!";
close (OUT);
#/usr/bin/env perl
严格使用;
使用“全部”警告;
my$directory='D:/Script_Code/Perl/Test/Datalog/Unit_80';
my$testna=‘FW OTP检查UVLO VIN电压’;
我的$testpin='vrect';
my$testnb='FW OTP校验和回读';
my$testnc='FW OTP校验和差';
my$testnd='FW校验和Pat Pin失败计数';
my@header=('Unit#','Test#u Name','Pin_Name','Measure_Data','Upper_limit');
my$format=“%-8s%-40s%-15s%-15s%-1s\n”;
my$outfile=“$directory.sdc”;
打开(OUT,“>$outfile”);
打开(INF,“$directory”)| | die(“无法打开输入文件”\n”);
printf$格式,@header;
打印输出$格式,@header;
而(){
如果(/Device#):\s*(\d+/)
{$unit=$1;
下一步;}
咀嚼;
my@fields=split/\s{2,}/;
如果($fields[2]eq$testna和$fields[3]eq$testpin){
printf$format、$unit、$fields[2]、$fields[3]、$fields[5];
打印输出$format、$unit、$fields[2]、$fields[3]、$fields[5];
}
如果($fields[2]eq$testnb){#TEMP_SENSE_VBE
printf$format、$unit、$fields[2]、$fields[3]、$fields[5];
打印输出$format、$unit、$fields[2]、$fields[3]、$fields[5];
}
if($fields[2]eq$testnc){TEMP#u SENSE_VBE
printf$format、$unit、$fields[2]、$fields[3]、$fields[5]、$fields[6];
打印输出$format、$unit、$fields[2]、$fields[3]、$fields[5]、$fields[6];
}
如果($fields[2]eq$testnd){TEMP\u SENSE\u VBE
printf$format、$unit、$fields[2]、$fields[3]、$fields[5]、$fields[6];
打印输出$format、$unit、$fields[2]、$fields[3]、$fields[5]、$fields[6];
}
}
关闭(INF)| | die“无法关闭输入文件!!”;
收尾;
这与Perl构建、OS构建或系统的体系结构无关
首先检查您的错误
open (OUT, ">", $outfile)
or die("Can't create \"$outfile\": $!\n");
open (INF, "<", $directory)
or die("Can't open \"$directory\": $!\n");
open(OUT,“>”,$outfile)
或者死亡(“无法创建\“$outfile\”:$!\n”);
公开(INF,"如果您有两个问题,请分别提问。不可能同时在一个问题上勾选两个正确答案。我看不出这在64位平台上不起作用的任何原因。您是否收到任何错误消息?请回答您的问题并正确缩进您的代码,这很难阅读。@choroba我已将其转换为一个问题。@simbabque整个代码都是这样的。如何正确地执行我的代码?按照您拥有代码的方式阅读它并不容易。我相信如果缩进得更好一点,阅读起来会更容易。使用代码。我的错误是“无法打开……没有这样的文件或directorv”