关于csv文件的处理求助~~

关于csv文件的处理求助~~

有两个小问题:


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

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

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

望大家指教



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

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


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


先行拜谢!
有没有高手路过呢~~
csv文件的解析和创建,请看Text::CSV_XS库。
厄。。。

如果不把它当作是csv呢,因为要求在不同的平台上都可以解读,所以就把它当作一个普通的txt文档来考虑

简单的说,如果一个字串是这样的

aaaaaa,aaa,aa,a,aaa,aa,aa,"bb,dd,dde",aaded,a,a,ae,d

希望用","把他们分割储存在list里

但是要求 "bb,dd,dde" 要视为一个整体的段来储存。。
1、你先看一下Text::CSV_XS模块吧,应该能够满足你所需要的要求
2、最好用包吧,到时候调试也方便,看起来也比较直接
很奇怪为什么不用现成的模块呢……有什么特殊原因么。
一定要当成普通文件,自己用正则式取或者split吧。
比如

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

谢谢ls的两位高手

不能用现成的模块,是因为,我写的程序最后要给客户使用,而客户的机器上只能保证有最基本的perl应用环境,所以尽量只使用基本perl包里的的模块或者函数。。

我看了那个csv的介绍。。似乎是还需要安装他的库才能使用。。


PS。。本来我的程序是直接从excel里面读数据的,都调试成功了,后来boss的要求变了,因为用户可能是多平台(比如linux 等等),不一定支持excel文件,所以临时改成这样的要求了

上面那个正则我研究一下。。目前没大看懂:(




可以稍微解释一下那么多括号的作用么。。

拜谢了



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

研究了一下,看明白了上面的正则表示的意义

不过还有一点不是很清楚

请问最外面的那对括号是什么用意呢?

我试了一下,发现@res里面每个元素之间都有一个空元素。。。


终于明白空元素怎么出来的了。。原来是 后面判断的 * 应该改成 +