2009-04-28 99 views
2

我正在使用Perl作为输入为两个DNA短串的脚本。作为输出,我连接两个字符串字符串,然后在连接字符串的末尾打印第二个串在其副本上的字符串。例如:如果输入字符串是AAAA和TTTTT然后打印:为什么不是Perl的tr ///做我想要的?

AAAAATTTTT 
    TTTTT 

我知道还有其他方法可以做到这一点,但我很好奇,想知道为什么我使用TR ///的不工作。

该程序的代码是:

use strict; 
use warnings; 
print "enter a DNA sequence \n"; 
$DNA1=<>; #<> shorthand for STDIN 
$DNA1=~ s/\r?\n?$//; 
print $DNA1 "\n\n"; 
print "enter second DNA sequence \n"; 
$DNA2=<>; 
$DNA2=~ s/\r?\n?$//; 
print $DNA2 "\n\n"; 
$DNA= join("",($DNA1,$DNA2)); 
print "Both DNA sequences are \"$DNA\" \n\n"; 
$DNA3=$DNA1; 
$DNA3=~ tr/ATCGatcg//; 
print $DNA3 "\n\n"; 
$DNA4= join("",($DNA3,$DNA2)); 
print $DNA4 "\n\n"; 
exit; 
+0

这是只是格式不正确或Perl的语法格式实际上是这样吗? – 2009-04-28 15:25:50

+0

不是“$ DNA1 =〜s/\ r?\ n?$ //;”与“chomp $ DNA1”相同? – 2009-04-28 15:28:44

+0

是“$ DNA1 =〜s/\ r?\ n?$ //;”与“chomp $ DNA”相同,但是perl 4和更低版本不支持chomp,因此它是一种替代方案,而且我的机器安装了perl 4 – shubster 2009-04-28 15:31:10

回答

1

你TR改变任何ACTGatcg和删除它们。我想你想

$DNA3 =~ tr/atcgATCG/ /; 
1

你需要把一个空间,在tr命令下半年。

另外,似乎你想要做的是创建一个包含,因为是第一个字符串中的字符尽可能多的空间变量:

my $spaces = ' ' x length($DNA1); 
1

这可能只是一个简单的语法错误。请尝试:

$DNA3 =~ tr/ATCGatcg/ /; 

其中第二个斜杠分隔两个翻译实体,并且第二个和第三个斜杠之间有一个空格字符。

祝你好运!

编辑:我的错误 - 误解了你想做的事。回答相应调整:)

0

这是您要的程序吗?

 
#!perl 

my $s1 = 'AAAAAAAAA'; 
my $s2 = 'TCGAGCTA'; 

print 
    $s1, $s2, "\n", 
    ' ' x length($s1), $s2, "\n"; 
相关问题