Cygwin Strawberry perl @ARGV 未读取绝对路径

Cygwin Strawberry perl @ARGV not read absolute path

我在 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 数组是怎么回事?

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