Dermot wrote:
> Hi All,
>
> I have data in a tab delimited format like this (tabs might be lost in
> the formatting of the email).
>
> A456/959 ScHe
> M920/1123 He
> D123/999 ChFl
> D123/949 AnFl
> S520/257 Sp
> T510/106 TePeHe
> T540/110 Te
> T875/1010 TeSc
> T875/1050 TeSc
>
>
> I need to split the 2nd column. The string is to be split into 2
> characters , so ChFl becomes 'Ch, Fl' . I can't seem to find a RE that
> will split the data correctly. My best effort is below but is captures
> everything into $f[0], there is no splitting at all. I also tried my
> hand at a recursive subroutine but that caused a lot deep recursion
> errors.
>
> Can anyone offer a bit of advise here?
> Thanx,
> Dp.
>
>
>
>
> #!/bin/perl
>
> use strict;
> use warnings;
> use Text::Tabfile;
>
> my $file = 'myfile.txt';
> my $tabfile = new Text::TabFile;
> $tabfile->open($file);
>
> my @headers = $tabfile->fields;
>
> while (my $row = $tabfile->read) {
> my $str = $row->{'code'};
> my @f = split(/(?=\b[A-Z][a-z]\b)/, $str);
> print qq($row->{'number'}, "$f[0]" "$str"\n");
>
> #print $row->{'number'},"\t";
> #for (@f) {
> # print $_,',';
> #}
> #print "\n";
> }
I think you are better off using a simple global regex match Dermot.
my @f =$str =~ /[A-Z][a-z]+/g;
That finds all instances of a capital letter followed by one or more lower case
letters.
HTH,
Rob
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/