Post your code anyway! We can probably tell how you're trying to do things and what your incorrect assumptions are. You give a little, we give a lot back. | [reply] |
Fair enough. Here's my main code so far:
while (<FILE1>)
{
if ($_ =~ />/) #Header
{
if ($chr_num > 0)
{
my @str = split(undef,$temp_str);
push (@genome,@str);
}
$chr_num++;
print $chr_num . "\n";
$temp_str = "";
}
else
{
my $temp = chomp($_);
$temp_str = $temp_str . $temp;
}
}
I think that I have a problem of line endings or input formatting because I have warnings for unitialized values in: my @str = split(undef,$temp_str) | [reply] [d/l] |
To get rid of the Use of uninitialized value in regexp compilation warning message, I think you want to use:
my @str = split //, $temp_str;
This will split a string into individual characters.
| [reply] [d/l] [select] |
That's better, but it would be even better if posted code that was self contained. Also, as many will mention, always use strict; and use warnings; unless you have a specific reason you're not. I know you're using them, but you should show us you're using them.
The main problem I'm seeing in your script is that you're pushing a list into an array. Your description implies you want a matrix. In order to do that, you'll have to push an array reference into your @genome array:
push (@genome,\@str);
Perl only stores scalars in arrays and hash values, so, in order to create a multi-level datastructure, you need fill the array with a reference to the array.
A minor thing is that you'll probably miss your last chromosome because of how you're parsing the file. After you hit the end of the file, and there isn't a dangling header, you'll still have a lot of data in $temp_str that doesn't make it into @genome.
Edit: also, as toolic says, you should change you split line to:
my @str = split //, $temp_str;
| [reply] [d/l] [select] |
Hi, uvnew!
Perhaps you could elucidate why the answers to your previous post (from 8 months ago) Bioinformatic task failed to solve your problem?
Meanwhile, I suggest that you consult the documentation for split.
hth, dave
| [reply] |
I have attempted to figure out what is wrong with your code for several minutes, and am posting to inform you of my lack of success. My crystal ball couldn't help to make anything clearer.
On the bright side, the magic 8-ball did recommend that you should try adding use strict; use warnings; at the top of the script.
| [reply] [d/l] |
That's great, thank you so much.
| [reply] |