Demian wrote:
I ran into a problematic file that combined two numeric columns into one: ATOM 325 CA GLU B 40 -30.254 72.432-297.620 1.00 10.00 C ATOM 326 CA ASP B 41 -28.149 73.031-294.529 1.00 10.00 C ATOM 327 CA GLU B 42 -27.716 76.690-295.429 1.00 10.00 C ATOM 328 CA LEU B 43 -31.425 77.076-296.027 1.00 10.00 C ATOM 329 CA VAL B 44 -32.237 75.542-292.673 1.00 10.00 C ATOM 330 CA SER B 45 -29.850 77.900-290.914 1.00 10.00 C ATOM 331 CA LEU B 46 -31.335 80.873-292.720 1.00 10.00 C ATOM 332 CA GLN B 47 -34.837 79.809-291.801 1.00 10.00 C I came up with a solution, but I'm sure there's an easier way. Is there a more elegant way of doing it? Thank you. _____________________________________________________ #!/usr/bin/perl # use strict; use warnings; my $numstring= "-100.00-400.34"; my @pieces= split /([-])/, $numstring; my @nums; for (my $k=0; $k<=$#pieces; $k++){ if ($pieces[$k] eq "-") { push @nums, "$pieces[$k]$pieces[$k+1]"; $k++; next; } elsif($pieces[$k]=~ /\d+/) { push @nums, $pieces[$k]; } } map {print $_ . "\n"} @nums;
Hi Demian If I understand correctly you want to split each line of data on whitespace and also before all minus signs, whether or not they are preceded by whitespace. The program below achieves that requirement. I hope it helps you. Rob use strict; use warnings; while (<DATA>) { my @data = split /\s+|(?=-)/; print "@data\n"; } __DATA__ ATOM 325 CA GLU B 40 -30.254 72.432-297.620 1.00 10.00 C ATOM 326 CA ASP B 41 -28.149 73.031-294.529 1.00 10.00 C ATOM 327 CA GLU B 42 -27.716 76.690-295.429 1.00 10.00 C ATOM 328 CA LEU B 43 -31.425 77.076-296.027 1.00 10.00 C ATOM 329 CA VAL B 44 -32.237 75.542-292.673 1.00 10.00 C ATOM 330 CA SER B 45 -29.850 77.900-290.914 1.00 10.00 C ATOM 331 CA LEU B 46 -31.335 80.873-292.720 1.00 10.00 C ATOM 332 CA GLN B 47 -34.837 79.809-291.801 1.00 10.00 C **OUTPUT** ATOM 325 CA GLU B 40 -30.254 72.432 -297.620 1.00 10.00 C ATOM 326 CA ASP B 41 -28.149 73.031 -294.529 1.00 10.00 C ATOM 327 CA GLU B 42 -27.716 76.690 -295.429 1.00 10.00 C ATOM 328 CA LEU B 43 -31.425 77.076 -296.027 1.00 10.00 C ATOM 329 CA VAL B 44 -32.237 75.542 -292.673 1.00 10.00 C ATOM 330 CA SER B 45 -29.850 77.900 -290.914 1.00 10.00 C ATOM 331 CA LEU B 46 -31.335 80.873 -292.720 1.00 10.00 C ATOM 332 CA GLN B 47 -34.837 79.809 -291.801 1.00 10.00 C -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/