Cygwin草莓perl @ARGV不读绝对路径

时间:2016-01-14 03:58:02

标签: perl argv

我在Windows 7机器上的Cygwin工作。我将Cygwin perl与windows strawberry perl联系起来。

10:13 PM Thu Jan 14$ ls -ltr /usr/bin/perl
lrwxrwxrwx 1 casper None 40 Nov 29 21:40 /usr/bin/perl -> /cygdrive/c/strawberry/perl/bin/perl.exe

我有一个接受命令行参数的脚本。当我放入目录路径时,它无法读取文件。

casperw@W01B6XLV /cygdrive/c/casper/DEV$ ./parseCMTA /tmp/example.txt
Error opening /tmp/example.txt - No such file or directory

我将它复制到脚本所在的相同路径,它可以正常工作:

casperw@W01B6XLV /cygdrive/c/casper/DEV$ cp /tmp/example.txt .
casperw@W01B6XLV /cygdrive/c/casper/DEV$ ./parseCMTA example.txt
Short name – ORANGEJulius
GL- 7512522  ADP- 20692677
GL- 7512524    ADP- 21692677
CMTA TO MS 050
casperw@W01B6XLV /cygdrive/c/casper/DEV$ cat parseCMTA
#!/usr/bin/perl
use strict ;
use warnings ;
my $file_grab = $ARGV[0] ;
open my $CMTA_file , '<' , $file_grab or die "Error opening $file_grab - $!\n";
while (<$CMTA_file>) {
    print $_ ;
}

为什么命令行数组@ARGV不会处理文件位置的绝对路径,但是当文件位于同一目录时它将处理该文件。绝对路径和@ARGV数组发生了什么?

1 个答案:

答案 0 :(得分:2)

草莓Perl尚未与Cygwin编译,随后/tmp实际上是C:\tmp而不是Cygwin中的空格。因此,假设您给Strawberry Perl的任何路径都是正常的Windows路径(我相信/\在Strawberry Perl路径中是相同的)。如果您知道Windows中Cygwin /tmp的位置,您可以使用它。