新手求助~~关于csv文件的分割处理

新手求助~~关于csv文件的分割处理

新手求助~~关于csv文件的分割处理
有两个小问题:


1。 csv文件分割的时候,如果本来的项目里包含逗号“,”的话,excel默认的输出格式使用引号扩起来。。

我想读取csv文件的每一行,然后用逗号分割,将每一项的值作为数组的元素储存起来。。现在有引号存在,如何设置可以让perl把引号中间的东西默认为一个元素呢?

我想过再excel导出成csv的时候,用分号或者其他符号作为分隔符。如果不这样做,可以实现么?

望大家指教



2。 现在我写好了一个perl文件,里面有很多函数定义(类似一个函数库),我想在另外一个perl程序中调用这些函数,不知道有没有类似c的 include header file 的形式呢,还是要把函数定义文件变成包文件,然后调用呢?

另外,我看了一些文献,如果是包调用的话,是不是每次调用函数都要写成 packagename::function的形式呢,有没有简便点的方法实现?


新手问题,望大家不要笑话。。


先行拜谢!
问题1: --这个问题和"单.
问题1:
这个问题和"单词分解"类似, split时要求把引号内的内容作为一个整体, 当然如果不用split还有很多
办法. 但咱们就是要用split?
参看此贴我的回复
http://perlchina.sun126.com/cgi-bin/ccb/topic_view.cgi?forum=4&article_id=0004070815142659&page=40


问题2:
package, use
就像你用Perl自带的package一样.
万分感谢。。----第一.
万分感谢。。

第一个问题我想了一个方法

@res = $_ =~ /((?:(?:"(?:(?:[^"]|"")*)")|(?:[^,]*)))/g;

可是分出来,@res里每两个元素之间都有一个空元素。。。不知道怎么搞得:(




第二个问题 如果只是要包含所有要用到的函数的定义可不可以用require 直接调用那个函数定义文件呢。。因为package的用法不是很熟。。不知道这样行不行
[quote]回复给 hfmouse : .
[quote]回复给 hfmouse : 新手求助~~关于csv文件的分割处理...[/quote]

你的正则式里面的(?:)完全没必要...
并且不能满足要求吧?

试一试这个:>

sub parseCSV {
my $str = 'a, b, "1, 2", "c, d", 3, 4';
my @items = $str =~ /(?<=")[^"]*(?=",\s*)|[^",\s*]+(?=,\s*|$)/g;
print join("\n", @items);
}

####################
a
b
1, 2
c, d
3
4
####################