Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^4: Count similar characters in a row

by $new_guy (Acolyte)
on Oct 08, 2010 at 08:19 UTC ( [id://864163]=note: print w/replies, xml ) Need Help??


in reply to Re^3: Count similar characters in a row
in thread Count similar characters in a row

Hi JohnGG,

I tried running the script but this error kept popping up! Note that I modified it to take files:

my $FILENAME1 = "random.txt"; open(INFILE1, $FILENAME1); my @tests = map [ split ], <INFILE1>; my $FILENAME2 = "my_column_file.txt"; open(INFILE2, $FILENAME2); my @results; while ( <INFILE2> ) { my @cols = split; foreach my $idx ( 0 .. $#tests ) { foreach my $subidx ( 0 .. $#{ $tests[ $idx ] } ) { my @posns = split m{}, $tests[ $idx ]-[ $subidx ]; $results[ $idx ]-[ $subidx ] ++ if scalar @posns == grep { q{r} eq $cols[ $_ ] } @posn +s; } } } say qq{@$_} for @results;

the error was:

Can't modify anonymous list ([]) in postincrement (++) at gg.pl line 2 +0, near "] ++" syntax error at gg.pl line 26, near "say qq{@$_}" Execution of Jgg.pl aborted due to compilation errors.

Line 26 is this one: $results $idx - $subidx ++. Also I notice an error/flag in the last line. Should i change the say to print?

Replies are listed 'Best First'.
Re^5: Count similar characters in a row
by johngg (Canon) on Oct 08, 2010 at 09:15 UTC

    If you compare the code I gave you and your modified script you will notice that you have lost a couple of very important characters, changing the dereference operator(->) to the subtraction operator (-), i.e.

    my @posns = split m{}, $tests[ $idx ]-[ $subidx ]; $results[ $idx ]-[ $subidx ] ++

    should be

    my @posns = split m{}, $tests[ $idx ]->[ $subidx ]; $results[ $idx ]->[ $subidx ] ++

    With regard to say, it was introduced with Perl 5.10 so use print if your version is earlier. If on 5.10, you have to put use 5.010 in your script to access newer features like say. I've not used Perl 5.12 yet so I'm not sure whether the use is necessary there.

    You have changed the script to use files but I would recommend that you use the three-argument form of open, employ lexical filehandles and also check for success, giving the o/s error on failure. Instead of

    open(INFILE1, $FILENAME1);

    do

    open my $input1FH, q{<}, $FILENAME1 or die qq{open: < $FILENAME1: $!\n};

    I hope this helps you moveforward.

    Cheers,

    JohnGG

      Hi JohnGG,

      The script is brilliant and runs well. However, I have notice something peculiar about it!

      It is able to handle data of 1 to 9 columns very well, but once you increase the number of columns to 10 or more it crashes. The reason I presume is because it cannot distinguish the numbers as I picks one digit per time. So something like:

      101093029

      Which is 10, 10, 9, 30, 29; will instead be read as single digits. A random.txt dataset like this for instance, confuses the script:

      1 39 921 11623 126114 7423110 72311849 891110 +3571 98110241176 896111351072 8745623109111 8 78 81011 6438 810569 3941056 10285631 75161 +1842 34711128106 631210789411 1048569111732 2 103 1014 11812 361184 132586 857101311 1114 +107935 11312104857 52174119863 9728341110615 2 34 9101 10128 1021197 7110965 210811645 911 +273568 61081524311 742381109115 5311102198647 5 113 891 61089 710381 2836911 511132610 6710 +53218 6111294573 710511892463 1784911621053 8 510 7114 91104 19825 823469 85117146 689111 +1072 51172641103 610752111893 8111102367549 10 12 685 56111 96428 5118342 711810249 10111 +89657 65111024193 328761110491 2131087691154 8 98 1172 2815 487911 68710114 459108211 2578 +41196 71198642510 182111046593 8146732115109 11 31 362 81116 5921110 11791018 105121187 97 +51118210 11249810731 231168107945 1057948261311

      So I thought a clever thing would be to introduce commas's to the random.txt dataset. Please bear in mind that the my_column.txt file has more columns than the dataset I posted on the monastery wall.So my new "clever" random.txt dataset something looks like this:(please note that it's random so I couldn't replicate the data above albeit the fact that I was able to add commas):

      1, 11,9, 2,9,4, 1,7,2,4, 2,8,9,4,1, 8,11,4,3,5,1, + 7,8,10,2,3,11,5, 10,11,1,6,4,5,9,7, 7,4,2,10,6,5,3,8,1, 3, +1,8,2,7,4,9,10,6,11, 5,7,3,11,2,9,10,4,6,8,1, 1, 3,11, 3,4,5, 1,6,4,10, 1,11,9,2,5, 8,7,10,6,1,9, + 3,8,11,5,2,1,4, 5,3,9,10,11,4,7,1, 6,3,5,9,2,10,4,1,11, +2,5,6,4,9,8,3,10,11,7, 8,3,1,2,5,4,7,10,9,6,11, 6, 1,11, 7,1,2, 9,5,2,6, 1,6,9,11,10, 8,3,6,1,7,11, + 2,9,8,11,7,10,6, 11,7,9,6,5,2,4,10, 2,11,1,7,10,5,9,6,8, + 4,2,11,8,1,10,3,5,6,9, 6,4,7,9,10,11,8,1,3,5,2, 11, 9,4, 6,10,5, 3,2,10,5, 8,6,1,7,11, 6,2,1,8,9,7, + 11,8,4,6,3,2,5, 9,6,11,2,4,7,8,10, 7,10,2,1,11,3,9,6,8, +11,10,6,7,4,2,1,9,8,5, 7,6,11,2,1,3,9,4,5,10,8, 2, 11,8, 1,4,7, 11,4,2,9, 10,2,4,5,1, 1,8,3,4,6,11, + 4,2,5,10,6,7,11, 11,2,8,7,10,1,6,3, 11,5,1,9,6,4,2,7,10, + 7,10,6,4,8,11,1,9,3,5, 2,8,5,9,3,10,6,4,7,11,1, 6, 3,9, 4,3,9, 4,8,2,7, 1,4,5,3,6, 1,8,6,4,2,11, + 10,3,8,9,7,1,4, 6,7,10,1,9,8,2,4, 11,1,6,9,3,4,8,10,2, 2,4, +6,5,1,10,8,7,9,3, 10,8,2,7,6,9,4,11,1,5,3, 10, 3,6, 9,11,7, 6,8,9,5, 9,1,11,3,5, 4,6,9,8,5,10, + 6,11,2,5,1,8,9, 6,3,4,10,8,5,7,2, 1,10,7,8,4,3,6,11,9, 6 +,2,10,4,9,11,3,5,7,8, 1,6,2,11,5,3,4,10,7,9,8, 9, 7,2, 5,4,8, 11,3,8,7, 3,9,10,2,5, 2,5,9,6,1,10, + 8,3,1,4,10,6,9, 3,6,1,10,2,9,4,11, 2,3,10,6,5,1,4,8,9, 9, +8,6,11,1,2,10,4,5,3, 9,3,4,8,7,5,11,1,2,10,6, 8, 2,4, 1,3,9, 2,1,8,3, 1,4,2,8,7, 10,7,11,9,3,8, + 9,1,5,11,6,10,8, 9,6,2,4,10,3,11,8, 3,2,11,7,4,10,1,6,9, 9 +,6,11,8,5,10,4,7,2,3, 8,7,2,1,10,9,11,5,4,6,3,

      A dummy "my_column_file.txt is here:"

      0 z z z z z z z z + z z z z z z z z z z z z z z z z + z - z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z +z z z z z z z z z z z z z z z z z z z + z 0 z z z z z z - z + - z z z z z z - z z z z z + - z z - - z - z z z z + - z z z z z z z z - z z z + - z z z - - z - z z z z + z z z z z z z z z z z z z z z z z + - z z z z z - z z - z z z z + z z z z z z z z 0 z z z z z z - z + - z z z z - z - - + z z z z - z - - - z + - - - z - - z z z z + - z z z - z z z - - + - z - - z - - z z + z z - z - - z z z z z + - z - z z z - - - z +z - - - z z - z z z z + z z z - z z z - 0 z z z z z z - z + - z z z z - - - + - z - z z - z - - + - z - - - z - +- z z z z - z - z - z z + - - - - - - + - z - - z - - z - + z - - z - z - - + - - - - z z - +- - z z - - - z z + - z z z z - z - - - + - z - 0 z z - z - z - z + - z z - - - - + - - z - - - - + - - - - - - + - - z - - - z z + - - - - - - +- - - - - - - + - - - - - z - + - - - z - - z + - - - - - - - + - - - - - - +z - - - - z - + - z - z z - z - - + - - - - 0 - z - z - - + - z - z - - - - + - - - - - - + - - - - - - + - - - - - - + - - z z - - - - + - - - - - - + - - - - - - +- - - - - - - + z - - - - - - + - - - - - - + - - - - z - - + - - z - - z - + - z - z - - - - + - - 0 - z - z - - + - - - z - - - + - - - - - - + - - - - - - + - - - - - - - + - - - z - - +- - - - - - - + - - - - - - + - - - - - - + - - z - - - - + - - - - - - +- - - - - - - + - - - - z - - + z - - - - z - + - - - - - 0 - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - z - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - 0 - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - z - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - 1 z z z z z z z z + z z z z z z z z z z z z - z + z z z z z z z z z z z z z z z - + z z z z z z z z z z z - z z z + - z z - z z z z z z z z z z z +z z z z z z z z z z z z z z z z z z z +z z z z z - z z z 1 z z z z - z - z + z z z - z z z z - z z z + - - z z z z z z - - + - z - - z z z - z z z + z z z z - z z z - - z + - - z z - z z z z z z z z z + - - z - z z z z - + - z - z z z z z z z z z z z z z +z - - z z 1 z z z z - z - z + z z z - - z - z + - z z - - - z - - + - z z - - - - + - - - z z - z z - + - z z - - z - z - + - - - - z z - - + - - - - z - z z + - - z - z z z - - + - z - - z - z z z z z + z z - z - - - - + - - 1 z z z z - z - z + z z z - - z - - + - z - - - - - + - - - - z - - + - - - - - z z + - z z - - - - - + - z - z - - - + - - - z - - - + - - - z - - z - + - - - - - z - + - - z - - - - +z - - z z z z - z - + - - - - - 1 z z z z - z - z + z z z - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - z - - + - - - - - z - +z - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - z - z + - - z - - - - + - - 1 z z z z - z - z + z z z - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - z - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - 1 z z z z - - - z + z z z - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - 1 z z z z - - - z + z z z - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - 1 z z z z - - - z + - z z - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - 1 z z z z - - - z + - - z - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - 1 z z - z - - - z + - - z - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - 1 z z - - - - - + z - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - 1 z z - - - - - + z - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - 1 z z - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - 1 z z - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - 1 z z - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - 1 z z - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - 1 - z - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - 1 - z - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - 1 - z - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - 2 z z z z z z z z + z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z +z z z z z z z z z z z z z z z z z z 2 z - z - z z - + - - - z - z - + - z z z - - z - - z z + z z - z - z z - z z z z + z z z z z z z z z z - z z z z z + z z z z z z z - z z z - z z +z z z z - z z z - - z z z +z z - - z z z z - - z +z z z z z 2 z - z - - - +- - - - - - z + - - z z - - - z - + - z z z z - - - z z + - z z z z z z z - z z z - + z z - z z - z z z z z - + z z z - z - - - z z z + - z z - z z z - - z z + z z z - - z z z z - - + z z z z z z 2 - - - - - - + - - - - - - z + - - z z - - - z + - - - - - - + - - - - - - z + - z - z z z - z z z - + - z - z z - z - z - + z - z z z - - - - + - z z z - - - - z + z z - - z z - z - + - - - z z z - - z + - - - z z 2 - - - - - - + - - - - - - + - - - - z - - + - z - - - - - + - - - - - - + - z - - - z - z - + z z z - - z - z z - + - - z - z - - + - - - - - - - + - - - - - - + - z z z - - z z - z + - - - - z z z - - + z - - - - z 2 - - - - - - + - - - - - - + - - - - - - + - - z - - - - + - - - - - - - + - z - - - z - + - - - - z - - z + - z - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - z - - + - - - - - - + - - - - - - + - - - - 2 - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - z + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - 2 - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - z + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - 3 z z z z z z z z + z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z +z z z z z z z z z z z z z z z z z z 3 z z z z z z z z + z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z +z z z z z z z z z z z z z z z z z z 3 z z z z z z z z + z z z z z z z z z z z z z z z z + z z z z z z z - z z z z z z z z + z z z z z z z z z z z z z z z z z z + - z z z z - z z z z z z z z +z - z z z z z z - z z z z z z +z z z z z z z z z 3 - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - z + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - 3 - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - z + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - +- - - - - - - + - - - - - - + - - - - - - + - - 4 z z z z z z z z + z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z +z z z z z z z z z z z z z z z z z z 4 z z z z z z z z + - z z - z z z z z z z z z z z + z z z z z z z z z - z z z z z z +z z z z z z z z z z z - z z z z +z - z - z z z z z z z z z z z + z z z z z z z z z z z z z z z z z z z + z z z z z - z 4 z z z z - - - z + - z z - - z z - + - - - z - z z - + - - - z - z z - - + z z z - - - z z - z z + z - z z z - - z - + - z z - z - z z z z - + - z - - - z z z - +z z z z - z z - - z - + z - z z z - - - - + z - - 4 z z z - - - - + - - - - - - + - - - - - - + - - z - - - - + - z - z z - - - - + z - - - - - +- z - - - - - +- - - z - - - z + - - - - - z z - + - - - - - - z + z - - z - z - z + - - - z - z - z - + z - - - - - +- - 4 z z z - - - - + - - - - - - + - - - - - - + - - z - - - - + - - - - z - - + - - - - - - +- - - - - - - + - - - - - z - + - - - - - - + - - - - - - + - - - - - - z + - - - - - - + - - - - - - - + - - - - - - + - - - - - 4 z - z - - - +- - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - + - - - - - - + - - - - - - + - - z - - - - + - - - - - - + - - - - - - - + - - - - - - + -

      I modified the script as shown on my scratchpad to be able to remove the commas and then do it's tasks. The scripts fails miserably as it on computes as if only one column exists. Please help me resolve this!

      Thanks,

      $new_guy

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://864163]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (7)
As of 2024-04-16 06:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found