Вот проблема: создание 10 итераций по 50 итераций и доступ к строке из 50 символов вне внутреннего цикла foreach.
Я попытался поместить итерацию 50x внутри подфункции и вызвать ее, но это былобезуспешными.Пока что я получаю только один символ вне цикла foreach независимо от того, находится он в подфункции или нет.Я вполне уверен, что это проблема с областью действия, которую я не вижу.
Итак, код:
#!/usr/bin/perl
use strict;
use warnings;
my @dna = ('A','G','T','C');
my $i;
my $str;
for ($i=1; $i<11; $i++){
#print $i . " ";
foreach(1..50){
my $nt = int(rand $#dna + 1);
$str = $dna[$nt];
#correct here all 50 nts
print $str;
}
#single nt here
#print $str;
print "\n";
}
Вывод: Corerct, но мне нужно получить доступ к $ str как естьниже, но 1010 * вне * цикл Еогеасп и в пределах первой для цикла.
TGATTAGCGTCCGCGCGTATTGTATTAAGCCACAGAATGTAATGCCAAGA GCTATAGGAAGACGCCGATCCCTGGACCGGCACAGGCACGGTAACAGCAG TTGTTGTAGGATCCCAGGGAGCGAAGCACGTGAACTGCGACTAATTTCAA TAACCAGGCAACACTAAACAGCTCCCATGTGTAAGGACGTATAGGCAGTT GTAATTGTAGATCACAAAATTTACACGGTATAGCATTAACTGGAACCTGC AACAGTGCCGTTTATTAATCTCCTCTAGTGTAGGGACGAATCGACCACGG CGTGAGCAAGCACAAATATCCTTTAGGGGTGTGCTTAAAACACCCAGTAG GAGTTCATAGGCCAACAATATGGCAAAGCCTTGCCCCATCAAATTCGGCG TTGCGTCTGCGAACACTGTTGGTGTGCCTTTAGTGCGGGTTACTCGAGAA CGCGATCTCCGTTTATAACGCTAGCAAACTACTACGGACCGAGGCATCGC
Я удалил лишний пробел в строке.Это было излишним.
Это была еще одна попытка получить переменную безрезультатно:
use strict;
use warnings;
my $str;
my @dna = ('A','G','T','C');
for (my $i=1; $i<11; $i++){
fifty();
print $str;
}
sub fifty {
foreach (1 .. 50){
my $nt = int(rand $#dna + 1);
$str = $dna[$nt];
return $str;
}
}