Hi Yitzle:

Thank you very much for your suggestion:

Here is my perl file: clusters.pl

#! /usr/bin/perl
use warnings;
use strict;
while (my $line = <>) {
  $line = ~/cluster\[(\d)+\] = {([\d ]+)}/ or die;
  my @vals = split(/+/,"$1 $2");
  print join(",",@vals). "\n";
}

my input file (clusters.in) is:

cluster[1] = { 1 2 3 4 8 10 12 13 14 18 20 22 }
cluster[2] = { 5 6 7 11 17 }
cluster[3] = { 9 15 16 19 21 23 27 30 31 33 34 }
cluster[4] = { 24 25 26 28 29 32 }

When I input to the shell

bash-3.00$ ./clusters.pl clusters.in > clusters.out

I do get the following error message:

Quantifier follows nothing in regex; marked by <-- HERE in m/+ <--
HERE / at ./clusters.pl line 6.

and got nothing written at the output file

Where am I making the mistake ?

Am I wrongly invocating the perl code ?

Thank you for any help

Regards

Erasmo


On 26/06/2008, yitzle <[EMAIL PROTECTED]> wrote:
> On Thu, Jun 26, 2008 at 3:28 PM, Erasmo Perez <[EMAIL PROTECTED]>
> wrote:
>> Hi dear list:
>>
>> Thank you very much for you great help in solving my past issue,
>> regarding the removing of the trailing commas and points.
>>
>> Thank you very much indeed :-)
>>
>> Now, my last (I hope) issue.
>>
>> I got another text file in the following format:
>>
>> cluster[1] = { 2 3 4 8 10 14 }
>> cluster[2] = { 25 26 29 32 }
>> cluster[3] = { 1 5 6 7 11 12 13 17 18 22 }
>> cluster[4] = { 9 19 21 23 24 27 28 30 31 33 34 }
>>
>> and I need to tranform it in a new CSV file that starts each line with
>> the "cluster" value (the square-brackets enclosed value), followed by
>> its {}-bracket enclosed list values (in the same order), as is shown
>> below:
>>
>> 1,2,3,4,8,10,14
>> 2,25,26,29,32
>> 3,1,5,6,7,11,12,13,17,18,22
>> 4,9,19,21,23,24,27,28,30,31,33,34
>>
>> How could I accomplish it using Perl ?
>>
>> How could I remove the square-brackets, the {}'s , the "=" sign and
>> the word "cluster" from the input file, rendering the same number
>> sequence, but now just separated by commas ?
>>
>> Thank you very much for your great help, it is _saving_ my neck in the job
>> :-)
>>
>> Regards
>>
>> Erasmo
>
> #!/usr/bin/perl
> use warnings;
> use strict;
>
> while ( my $line =  <> ) {
>     $line =~ /cluster\[(\d)+\] = {([\d ]+)}/ or die;
>     my @vals = split( / +/, "$1 $2" );
>     print join(",", @vals) . "\n";
> }
>

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to