Training, Open Source computer languages
PerlPHPPythonMySQLApache / TomcatTclRubyJavaC and C++LinuxCSS 
Search for:
Home Accessibility Courses Diary The Mouth Forum Resources Site Map About Us Contact
Python, Lua and Tcl - public course schedule [here]
Private courses on your site - see [here]
Please ask about maintenance training for Perl, PHP, Java, C, C++, Ruby, MySQL and Linux / Tomcat systems
How to split a file but not line by line

Posted by carlos (carlos), 18 April 2005

I was trying to split one file that contains a table of a database, but i couldn't.    

My file has as a field separator chr(1) and as a "row" separator chr(2).
But the problem is that the content of the last field can contain newline character and so on.

e.g: For the example here I replaced chr(1) into '|' and chr(2) into '%'

The source file
AA: adi
Dear John

The script
open fh, "<SourceFile.txt" or die "Couldn't open file: SourceFile.txt $!";
@Records = split (/%/,<fh>);
print "Records = @Records";

foreach $record (@Records)
   print "Description = $desc \n";

It prints:
Records = 50003|KLECZ0003|12.12.2002|MP|[MPID]181519;(LZA)
Description = [MPID]181519;(LZA)

But what i want to get, is:
AA: adi

Could you help me on this, please?

Thanks in advance.


Posted by admin (Graham Ellis), 18 April 2005
Open the file and read it with

read (FH,$buffer,-s "");


@rows = split(/\x01/,$buffer);
foreach $record(@rows) {
   @fields = split(/\x02/,$record);

This page is a thread posted to the opentalk forum at and archived here for reference. To jump to the archive index please follow this link.

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2018: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01225 708225 • FAX: 01225 793803 • EMAIL: • WEB: • SKYPE: wellho