小编Axe*_*man的帖子

如何对值为数组引用的Perl哈希进行排序?

嘿,我只是想知道是否有一个很酷的"单线程",可以排序我的哈希控件数组引用.所以我的哈希中有一堆键/值类似于:

$DataBase{$key} = \@value;
Run Code Online (Sandbox Code Playgroud)

但是我想按array[0]元素对哈希进行排序.然后循环通过'em.我有这个开头:

foreach my $key (sort {$DataBase{$a} cmp $DataBase{$b} } keys %DataBase)
Run Code Online (Sandbox Code Playgroud)

但这显然只是通过数组的指针值对我的哈希值进行排序.它并不一定是"一行",但我希望找到一个不涉及重构哈希的解决方案.

sorting perl hash reference perl-data-structures

3
推荐指数
1
解决办法
3216
查看次数

为什么File :: Slurp在返回列表时会返回标量?

我是File :: Slurp模块的新手,在我第一次使用它时,它没有给出我期望的结果.我花了一段时间才弄明白,所以现在我对我为何看到这种行为感兴趣.

我对File :: Slurp的调用如下所示:

my @array = read_file( $file ) || die "Cannot read $file\n";
Run Code Online (Sandbox Code Playgroud)

我包含了"die"部分,因为我习惯在打开文件时这样做.我的@array总是会在数组的第一个元素中得到文件的全部内容.最后我拿出了"|| die"部分,它按照我的预期开始工作.

这是一个例子来说明:

perl -de0

Loading DB routines from perl5db.pl version 1.22
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(-e:1):   0
DB<1> use File::Slurp

DB<2> $file = '/usr/java6_64/copyright'

DB<3> x @array1 = read_file( $file )
0  'Licensed material - Property of IBM.'
1  'IBM(R) SDK, Java(TM) Technology Edition, Version 6'
2  'IBM(R) Runtime Environment, …
Run Code Online (Sandbox Code Playgroud)

perl file-io perl-module perl-context

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

How to suppress quotes output as HTML entities?

$selected = ' selected="selected"'
# or
$selected = qq( selected="selected")
Run Code Online (Sandbox Code Playgroud)

is returned as:

selected=&quot;selected&quot;
Run Code Online (Sandbox Code Playgroud)

which is an invalid HTML attribute, ofcourse.

How do I fix it?

Edited to add:

<select name="alignment" class="select" 
    <%== param('feature') ? '' : 'disabled'; %>
>
% foreach (keys %al) {
%  my $selected = param('aligment') && param('aligment') eq $_ ? ' selected' : '';
%
%  if (!param('aligment') && $_ eq 'left') { $selected = ' selected' }
%
    <option value="<%=$_%>" <%= $selected %>>
     <%= …
Run Code Online (Sandbox Code Playgroud)

html quotes perl escaping

3
推荐指数
1
解决办法
301
查看次数

如何解析命令行参数?

我想解析perl脚本中的参数列表,例如我遇到这种情况:

script.pl -h 127.0.0.1 -u user -p pass arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)

我该如何解析数组中不是选项的参数列表,以及标量值中的选项参数?

谢谢.

perl arguments command-line-arguments

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

将在Windows或Linux下运行的Perl序言

是否有任何单一的魔术"前言"将使Perl脚本在Windows(作为批处理文件)或Linux(作为可执行文件)下运行,类似于那些使其在任何shell下工作的前导码?

linux windows shell perl

3
推荐指数
1
解决办法
701
查看次数

Perl:计算复杂数据结构中的元素

我是复杂数据结构的新手.我有点理解他们背后的想法,但是在获取数据方面遇到了一些困难.我通过使用Data :: Dumper找到了当前问题孩子的结构....

$VAR1 = {
      '4' => {
               'engine_coded' => 0,
               'name' => 'FILTER_1',
               'filter_actions' => {
                                     'X_Override_Queue_Level' => 'Value'
                                   },
               'filter_criteria' => [
                                      [
                                        'X_Charge',
                                        '=',
                                        'X_CHARGE_1'
                                      ]
                                    ]
             }
    };
Run Code Online (Sandbox Code Playgroud)

我需要做的是确保给定一个过滤器名称(在本例中为"4"),"name"有一个值,以及"filter_actions"和"filter_criteria".

任何人都知道如何最好地完成这个?非常感谢!珍妮

arrays perl hash perl-data-structures

3
推荐指数
1
解决办法
373
查看次数

更优雅的访问散列数组的方法

首先,如果我在即将发布的帖子中得到任何错误的术语,那么这对我来说仍然是新的.

一些背景,我有一个脚本,检查我们的存档网络配置为一组特定的设置.因此,该脚本会运行许多检查,并将结果添加到该检查的数组中.

例如,确保配置syslog的检查被添加到名为@internalsyslogerror的数组中

运行所有检查后,所有检查的数组都会添加到哈希中,密钥为设备名称.

请注意所有代码都使用严格,使用警告

使用以下命令;

$results{$configs} = [@internalsyslogerror, @bordersyslogerror, 
@borderntperror, @borderntperror, @internalntperror, 
@bordertacacserror, @internaltacacserror, @enablepasswordchecks,
@internalsnmpkeyserror, @timezoneerror, @configregistererror, 
@bannererror, @bootregistererror, @domainnameerror];
Run Code Online (Sandbox Code Playgroud)

我所拥有的问题是提取此信息的最优雅方式,我希望减少为了向脚本添加新检查而必须进行的更改量.目前我将不得不将附加数组添加到上面的代码,然后将解除引用部分添加到处理它的子.

这是我目前所做的去引用和输出数组,然后我通过电子邮件发送.

foreach my $k (keys %results) {
    push @results, "<b>$k</b><br>";
    if (defined $results{$k}[0] ){
    push @results, "$results{$k}[0]";
    }
    if (defined $results{$k}[1] ){
    push @results, "$results{$k}[1]";
    }
    if (defined $results{$k}[2] ){
    push @results, "$results{$k}[2]";
    }
    if (defined $results{$k}[3] ){  
    push @results, "$results{$k}[3]";
    }
    if (defined $results{$k}[4] ){
    push @results, "$results{$k}[4]";
    }
    if (defined $results{$k}[5] ){
    push @results, "$results{$k}[5]"; …
Run Code Online (Sandbox Code Playgroud)

arrays perl hash perl-data-structures

3
推荐指数
1
解决办法
182
查看次数

使用Perl提取特定行

我正在编写一个perl程序来提取我匹配的两个模式之间的行.例如,下面的文本文件有6行.我正在匹配负载均衡器并结束.我想得到介于两者之间的4条线.

**load balancer** 
new 
old
good
bad
**end**
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在负载均衡器之间提取行并结束到数组中.任何帮助是极大的赞赏.

perl line-processing

3
推荐指数
1
解决办法
1876
查看次数

perl中这个变量的数据结构是什么?

我是perl的新手并且阅读用perl编写的代码.一行如下:

$Map{$a}->{$b} = $c{$d};
Run Code Online (Sandbox Code Playgroud)

我熟悉哈希的样子%samplehash和访问方式$samplehash{a}="b"

但是上面这句话实际上是什么说Map?

perl perl-data-structures

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

Perl如果不工作?

这是我的代码:

#!/usr/bin/env perl

sub start
{
    ...
}

sub stop
{
    ...
}

if (defined $ARGV[0])
{
    if ($ARGV[0]=='start') {start}
    elsif ($ARGV[0]=='stop') {stop}
    else {die "Unrecognized command: $ARGV[0]"}
}

无论我做什么,它总是执行&start.难道我做错了什么?

我正在使用Linux Mint 10和Perl 5.10.1.

perl comparison if-statement

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