我正在测试一个概念验证,它通过TCP连接将两个文件发送到远程服务器,所有这些都使用Perl。但是,我遇到了一个问题,发送了多个文件。目前,我有一个客户端(在Windows上运行,运行ActiveState Perl),希望将超过2个CSV文件发送到远程服务器(运行某种形式的RedHat)。随着流程的进行,客户端将逐行打印出CSV文件的内容,一旦完成,它将通过消息发送到服务器。然后,服务器应拦截该消息,并切换文件以写入另一个CSV文件。
但是,服务器只是一个大文件,我希望它将收到的内容拆分为两个文件。所以,我真正的问题是:使用Perl在TCP连接上发送两个以上文件的最简单方法是什么?我首选使用内置模块,例如IO :: Sockets,但如果我必须下载外部模块以简化过程,我也可以这样做。
感谢您的任何和所有答案!
[编辑]:似乎是影响我的行结尾,以及文件的最后一行没有附加“\ n”的事实。用Unix替换Windows行结尾似乎可以解决这个问题,以及其他一些带有“End Of File”消息的格式。感谢所有回答的人!
答案 0 :(得分:2)
发送包含第一个文件长度的标头。由于它们是文本文件,而且这是Perl,因此最好使用文件中的行数。另一方面,读取该行数作为第一个文件,然后将所有其余行作为第二个文件。这个原则可以扩展到任意数量的文件。
编辑:您还需要将Windows行结尾转换为linux行。一个简单的s / \ r \ n / \ n /;应该做的。