嘿,我只是想知道是否有一个很酷的"单线程",可以排序我的哈希控件数组引用.所以我的哈希中有一堆键/值类似于:
$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)
但这显然只是通过数组的指针值对我的哈希值进行排序.它并不一定是"一行",但我希望找到一个不涉及重构哈希的解决方案.
我是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) $selected = ' selected="selected"'
# or
$selected = qq( selected="selected")
Run Code Online (Sandbox Code Playgroud)
is returned as:
selected="selected"
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) 我想解析perl脚本中的参数列表,例如我遇到这种情况:
script.pl -h 127.0.0.1 -u user -p pass arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
我该如何解析数组中不是选项的参数列表,以及标量值中的选项参数?
谢谢.
是否有任何单一的魔术"前言"将使Perl脚本在Windows(作为批处理文件)或Linux(作为可执行文件)下运行,类似于那些使其在任何shell下工作的前导码?
我是复杂数据结构的新手.我有点理解他们背后的想法,但是在获取数据方面遇到了一些困难.我通过使用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".
任何人都知道如何最好地完成这个?非常感谢!珍妮
首先,如果我在即将发布的帖子中得到任何错误的术语,那么这对我来说仍然是新的.
一些背景,我有一个脚本,检查我们的存档网络配置为一组特定的设置.因此,该脚本会运行许多检查,并将结果添加到该检查的数组中.
例如,确保配置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) 我正在编写一个perl程序来提取我匹配的两个模式之间的行.例如,下面的文本文件有6行.我正在匹配负载均衡器并结束.我想得到介于两者之间的4条线.
**load balancer**
new
old
good
bad
**end**
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在负载均衡器之间提取行并结束到数组中.任何帮助是极大的赞赏.
我是perl的新手并且阅读用perl编写的代码.一行如下:
$Map{$a}->{$b} = $c{$d};
Run Code Online (Sandbox Code Playgroud)
我熟悉哈希的样子%samplehash和访问方式$samplehash{a}="b"
但是上面这句话实际上是什么说Map?
这是我的代码:
#!/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 ×10
hash ×3
arrays ×2
arguments ×1
comparison ×1
escaping ×1
file-io ×1
html ×1
if-statement ×1
linux ×1
perl-context ×1
perl-module ×1
quotes ×1
reference ×1
shell ×1
sorting ×1
windows ×1