使用Perl打开在Mac Excel中创建的CSV文件

fan*_* yu 2 csv macos excel perl

我在使用下面的Perl代码时遇到了一些麻烦.我可以打开并阅读我手动制作的CSV文件,但是如果我尝试打开我保存为CSV文件的任何Mac Excel电子表格,下面的代码将其全部读作一行.

#!/usr/bin/perl

use strict;
use warnings;

open F, "file.csv";

foreach (<F>)
{
    ($first, $second, undef, undef) = split (',', $_);
}

print "$first : $second\n";

close(F);
Run Code Online (Sandbox Code Playgroud)

Ala*_*avi 10

始终使用专用模块(例如Text::CSVText::CSV_XS)来实现此目的,因为有很多情况下split-ing将无法帮助(例如,当字段包含逗号而非字段分隔符但在引号内时).


Mar*_*ark 5

传统的Macintosh(System 9和之前的版本)使用CR(0x0D,\ r)作为行分隔符.Mac OS X(基于Unix)使用LF(0x0A,\n)作为默认行分隔符,因此作为Unix工具的perl脚本可能期望LF但是正在获得CR.由于perl文件中没有行分隔符,因此认为只有一行.如果它有Windows行结尾(CR,LF),你可能会在每行的末尾得到一个不可见的CR.

使用0x0A替换0x0D的输入快速循环可以解决您的问题.