小编Gre*_*con的帖子

如何将Perl数组作为标量传递给子例程?

这是一位新生的Perl开发者.我一直在wra my my and and and and ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

我有以下代码(只剩下相关部分),因为其余的工作):

my @arrMissingTids;
@arrMissingTids = %hshTids;

my $missingtid;
foreach $missingtid (@arrMissingTids) {
    print "$missingtid\n";
}
Run Code Online (Sandbox Code Playgroud)

这很好用,返回我想要在数组中的值:

500000246,500000235,500000185,500000237,500000227,500000252
Run Code Online (Sandbox Code Playgroud)

但是,当我将它传递给子程序并将其包含在变量名中时,它不提供上面所写的列表,而只是提供数字1.代码如下:

myqry(@arrMissingTids);

sub myqry($) {

    my $missingtids = @_;

    $sql = "select 
        i.tid i_tid, i.name i_name …
Run Code Online (Sandbox Code Playgroud)

arrays perl scalar

2
推荐指数
2
解决办法
199
查看次数

拆分内部地图如何工作?

昨天我写了一个小子程序来解析我的/ etc/hosts文件并从中获取主机名.

这是子程序:

sub getnames {
    my ($faculty, $hostfile) = @_;
    open my $hosts ,'<', $hostfile;
    my @allhosts = <$hosts>;
    my $criteria = "mgmt." . $faculty;
    my @hosts = map {my ($ip, $name) = split; $name} grep {/$criteria/} @allhosts; # <-this line is the question              
    return @hosts;
}
Run Code Online (Sandbox Code Playgroud)

我打电话给它getnames('foo','/etc/hosts')并找回了与mgmt.foo正则表达式匹配的主机名.

问题是,为什么我必须$namemap表达式中单独写?如果我不写,请回到整行.变量是否评估其值?

perl split map

2
推荐指数
1
解决办法
213
查看次数

Perl OO方法调用第一个参数值( - >)

就Perl OO而言,具体到底是做->什么的?

例如,我打电话给主:

$result = a::b->mymethod( );
Run Code Online (Sandbox Code Playgroud)

在我定义的包中mymethod(),我使用以下内容:

    my( $class ) = @_;
Run Code Online (Sandbox Code Playgroud)

在主要方面,我显然没有传递任何参数mymethod(),所以$class参数来自何处?有没有人对此有一个很好的解释或解释这个的文件?

perl

2
推荐指数
1
解决办法
2046
查看次数

在Perl中,如何使用grep实现map?

前一段时间有人问我的"奇怪"的问题,我将如何实现mapgrep.今天我试着去做,这就是出来的.我是否从Perl中挤出了所有东西,还是有其他更聪明的黑客?

#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;

sub my_map(&@) {
    grep { $_= $_[0]->($_) } @_[1..$#_];
}

my @arr = (1,2,3,4);

#list context
say (my_map sub {$_+1}, @arr);
#scalar context
say "".my_map {$_+1} @arr;
say "the array from outside: @arr";
say "builtin map:", (map {$_+1} @arr);
Run Code Online (Sandbox Code Playgroud)

perl grep map

2
推荐指数
1
解决办法
835
查看次数

如何以添加元素的相同顺序打印哈希?

是否可以以LIFO或FIFO方式使用哈希?如何确保哈希以相同的顺序打印添加的元素?

#!/usr/bin/perl

print "content-type: text/html \n\n";

# BEGINNING HASH
%coins = ( "Quarter" , .25,
          "Dime" ,    .10,
          "Nickel",   .05 );
# PRINT THE OLD HASH
while (($key, $value) = each(%coins)){
    print $key.", ".$value."<br />";
}

# ADD NEW ELEMENT PAIRS
$coins{Penny} = .01;
$coins{HalfDollar} = .50;

# PRINT THE NEW HASH
print "<br />";
while (($key, $value) = each(%coins)){
     print $key.", ".$value."<br />";
}
Run Code Online (Sandbox Code Playgroud)

这给了

Nickel, 0.05
Dime, 0.1
Quarter, 0.25

Nickel, 0.05
Dime, 0.1
HalfDollar, 0.5
Penny, 0.01 …

perl

2
推荐指数
1
解决办法
586
查看次数

如何用其前辈替换所有出现的某些字符?

$s = "bla..bla";
$s =~ s/([^%])\./$1/g;
Run Code Online (Sandbox Code Playgroud)

我认为它应该取代所有出现的.那以后是不是%与之前的字符..

但那$s是:bla.bla但它应该是blabla.问题出在哪儿?我知道我可以使用量词,但我需要这样做.

regex perl

2
推荐指数
2
解决办法
1万
查看次数

Perl中的赋值运算符(=)如何在内部工作?

假设num是一个数组,

@num = (1 .. 10);
Run Code Online (Sandbox Code Playgroud)

要找到它的长度,我们使用以下表达式,

$num = @num;
Run Code Online (Sandbox Code Playgroud)

然后我$num在下面的作业中使用了相同的内容.

@slicenum = $num[1 .. 6];
Run Code Online (Sandbox Code Playgroud)

我知道,对于切片数组,我们使用@num而不是$num.它运行良好,没有任何错误.但是当我打印出@slicenum它的值时,它给了我2个结果.

@slicenum = $num[1 .. 6, 10 .. 20];
Run Code Online (Sandbox Code Playgroud)

对于上述作业,我得到了1.

虽然遗嘱值为$num10,但请解释上述两项任务中发生的情况.

perl assignment-operator

2
推荐指数
1
解决办法
149
查看次数

如何为每个哈希密钥分叉一个子进程?

我有一个哈希,当我尝试为每个哈希键创建一个子进程时,它的行为不符合我的预期.

请提出修改建议? 假设$pid从不小于0.

foreach $elem(keys %hash)
{
    $pid = fork();

    if ($pid) 
    {
       push @pids, $pid;
       print "in parent $$\n";
    }
    else
    { 
        print "in child $$\n"; 
    }
}
Run Code Online (Sandbox Code Playgroud)

perl fork

2
推荐指数
1
解决办法
168
查看次数

git log --author不显示所有提交

我已经做了十几次提交,但是当我执行一次提交时,我git log --author=pauld只会看到最后三个。没有作者过滤器,将显示完整的历史记录。我已经尝试--full-history了其他一些选项的变体,但似乎没有任何效果。作为参考,我需要列出自给定日期以来作者的提交清单,以便可以对其进行挑选。我只是没想到,这只是一个奇怪的路障。

git version-control

2
推荐指数
2
解决办法
2673
查看次数

如何在不丢失已提交更改的情况下更新我的本地存储库?

所以我分叉并克隆并创建了一个新分支,做了一些更改并进行了 git commit。

然而,原始回购(上游)有一些新的变化。我想让它们到我的本地仓库,并且准确到实际的分支,而不会丢失我已经提交的更改。我现在有一个提交

我花了大约一个小时来了解如何做到这一点,但如果不知道可以让我得到结果的实际关键字,这似乎是一个死胡同。

git github

2
推荐指数
1
解决办法
2036
查看次数

标签 统计

perl ×8

git ×2

map ×2

arrays ×1

assignment-operator ×1

fork ×1

github ×1

grep ×1

regex ×1

scalar ×1

split ×1

version-control ×1