in reply to Re: Splice an array into another array
in thread Splice an array into another array

I think I am getting it now, thank you

Final question for clarity's sake: in the end I have to manually enter each nucleotide, am I understanding this right? In other words I can't be lazy and store several DNA files I downloaded online into arrays and then operate on them. For each of my array I have to manually type the nucleotide sequences in myself or copy+paste them in

below I includes 2 examples of what I mean, in the first example I manually stored the nucleotides into arrays, and everything works. In the second example the nucleotides are stored into arrays via filehandler and things do not work (in the way I want)

this will splice the 2 arrays together in whatever fashion I want

#!/usr/bin/perl -w @DNA3 = qw(A T C C A T G C); @DNA4 = qw(G C C G A A T T A); splice (@DNA3, 1, 0, @DNA4); print @DNA3, "\n"; exit;

this will not work, I cannot use this to splice 2 arrays together

#!/usr/bin/perl -w $DNA3file = 'testDNA3'; open(DNA3handle, $DNA3file); @DNA3 = <DNA3handle>; $DNA4file = 'testDNA4'; open(DNA4handle, $DNA4file); @DNA4 = <DNA4handle>; splice (@DNA3, 1, 0, @DNA4); print @DNA3, "\n"; exit;

Replies are listed 'Best First'.
Re^3: Splice an array into another array
by huck (Prior) on Jun 23, 2017 at 23:25 UTC

      Could you explain this code a bit?  @DNA3=split('',join('',@DNA3)); I don't quite get what it means and why this is necessary for my script to work.

        @DNA3 = <DNA3handle>; # read all LINES of file into array chomp @DNA3; # remove any and all newlines @DNA3=split('',join('',@DNA3)); # join('',@DNA3) join all LINES into + one long line # split('', ...) split long line int +o list # of individual chara +cters # @DNA3= ... assign list of indi +vidual # characters to an ar +ray
        @DNA3 will end up looking something like  ('A', 'T', 'C', 'G', ...) See chomp, join, split.

        Update: Fixed up formatting of long comment lines for last statement.


        Give a man a fish:  <%-{-{-{-<

Re^3: Splice an array into another array
by AnomalousMonk (Archbishop) on Jun 23, 2017 at 23:35 UTC
    ... in the end I have to manually enter each nucleotide, am I understanding this right? In other words I can't be lazy and store several DNA files I downloaded online into arrays and then operate on them. For each of my array I have to manually type the nucleotide sequences in myself or copy+paste them in

    You have to realize that when you read a file with | with a sequence of statements like
        $DNA3file = 'testDNA3';
        open(DNA3handle, $DNA3file);
        @DNA3 = <DNA3handle>;
    the  @DNA3 array ends up with all the lines of the file, and each line is a string that looks like  "ATCCATGC\n" (note the newline that will be at the end of (almost) every line).

    If you have the lines of the file as strings, you | your program can operate on them as strings, break them up into arrays and operate on them, etc., as appropriate for your application. Your choice.


    Give a man a fish:  <%-{-{-{-<

      nope, I didn't, but thanks for the explanation, I understand it much more clearly now! :)