我在Stack Overflow中看到了这段代码,它对我有用.请解释一下.
my @amino_acids = $genetic_codes[8] =~ /[ACGT]/g;
join ',', map qq{"$_"}, @amino_acids;
$codons{$_}++ for @amino_acids;
Run Code Online (Sandbox Code Playgroud)
for这段代码的目的是什么,我试着查看perldocs但是无法清楚地了解它.还有什么可以用来代替for?
我正在读一个文件,我想知道如何跳过具有Unicode NULL,U + 0000的行?我已尝试过以下所有内容,但都没有效果:
if($line)chomp($line)$line =~ s/\s*$//g;我有一个关于将$calc值从科学记数法转换为十进制的问题.有什么好主意吗?
my $calc = log2($prob/$probWords);
push @result, join(' ',@words) ." (".$calc.")\n";
if(scalar(@result) == $bloc)
{
$cmp += $bloc;
print "$cmp lignes traités\n";
writeToResultFile($outFile,@result);
@result = ();
}
Run Code Online (Sandbox Code Playgroud) 我想创建一个子程序,将元素(带有值的键)添加到先前定义的散列中.该子例程在循环中调用,因此哈希增长.我不希望返回的哈希覆盖现有元素.
最后,我想输出整个累积的哈希值.
现在它不打印任何东西.最终的哈希看起来是空的,但不应该.我已经尝试了哈希引用,但它并没有真正起作用.在简短的表单中,我的代码如下所示:
sub main{
my %hash;
%hash=("hello"=>1); # entry for testing
my $counter=0;
while($counter>5){
my(@var, $hash)=analyse($one, $two, \%hash);
print ref($hash);
# try to dereference the returning hash reference,
# but the error msg says: its not an reference ...
# in my file this is line 82
%hash=%{$hash};
$counter++;
}
# here trying to print the final hash
print "hash:", map { "$_ => $hash{$_}\n" } keys %hash;
}
sub analyse{
my $one=shift;
my $two=shift;
my %hash=%{shift @_};
my …Run Code Online (Sandbox Code Playgroud) 这是我的字符串:
my $var = "eval(sometext,'|function|65200|url|click|Chargement|margin'.split('|'),0,{}))"
Run Code Online (Sandbox Code Playgroud)
我想得到65200的数字,我试过这个my ($key) = $var =~ /eval.*?\|(\d+)\|.*$/正则表达式,但我什么都没得到.
我正在编写一个脚本,它使用正则表达式从文本文件中识别和提取各种不同格式的年份.这是有问题的代码:
if ($parts[0] =~ /^\(*(\d\d\d\d)\)*$/) {
# Matches a single 4 digit date in parentheses such as (1979)
$start = $1;
$end = $1;
}
elsif ($parts[0] =~ m{\d\d\d\d\/\d\d\d\d} ) {
# Matches cases like 1948/1972
warn "Found a $1";
#do some other stuff
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是它找到与表达式匹配的日期elsif,但$1不保存值,即它"Found a "反复打印出一条消息,但没有值$1.谁能让我知道我在这里做错了什么?如果这是一个愚蠢的错误,我道歉.
谢谢!
我是perl的新手,我定义了一个函数
sub ex_arg($_)
{
print "$_[0]\n";
print "$_[1]\n";
print "$_[2]\n";
}
1;
Run Code Online (Sandbox Code Playgroud)
在另一个页面我打电话给那个页面.
require "ex_arg.pl";
ex_arg(1,2,3);
ex_arg(1,,3); #in the second function i want the second parameter to be null
1;
Run Code Online (Sandbox Code Playgroud)
是否有可能做到这一点.我没有得到第二个参数而是第三个参数作为第二个参数.
难道我做错了什么.请纠正我.
提前致谢.
我想要做的是从另一台服务器获取文件的内容.既然我不和perl一致,也不知道它的mods和函数iv'e就是这样:
my $fileContents;
if( $md5Con =~ m/\.php$/g ) {
my $ftp = Net::FTP->new($DB_ftpserver, Debug => 0) or die "Cannot connect to some.host.name: $@";
$ftp->login($DB_ftpuser, $DB_ftppass) or die "Cannot login ", $ftp->message;
$ftp->get("/" . $root . $webpage, "c:/perlscripts/" . md5_hex($md5Con) . "-code.php") or die $ftp->message;
open FILE, ">>c:/perlscripts/" . md5_hex($md5Con) . "-code.php" or die $!;
$fileContents = <FILE>;
close(FILE);
unlink("c:/perlscripts/" . md5_hex($md5Con) . "-code.php");
$ftp->quit;
}
Run Code Online (Sandbox Code Playgroud)
我认为id做的是从服务器获取文件,放在我的本地机器上,编辑内容,上传到任何地方然后删除临时文件.
但我似乎无法弄清楚如何获取文件的内容;
open FILE, ">>c:/perlscripts/" . md5_hex($md5Con) . "-code.php" or die $!;
$fileContents = <FILE>; …Run Code Online (Sandbox Code Playgroud) 我使用以下代码获得错误"Not a HASH reference".测试的正确方法是什么?哈希引用是类的成员变量?
package TestClass;
sub new {
my ($class) = @_;
my $self = {
_ht => \{}
};
bless $self, $class;
return $self;
}
sub itemExists {
my ($self, $key) = @_;
my $itemExists = 0;
if(exists $self->{_ht}->{$key}) { # ERROR HERE: Not a HASH reference
$itemExists = 1;
}
return $itemExists;
}
1;
# ------------------------------------------
package Main;
my $t = new TestClass();
$t->itemExists('A')
Run Code Online (Sandbox Code Playgroud)