我有一张包含以下数据的表格
1.1.1.1 routerA texas
2.2.2.2 routerB texas
3.3.3.3 routerC california
Run Code Online (Sandbox Code Playgroud)
Perl中存储此数据的最佳数据结构是什么?我正在考虑以IP地址作为密钥存储在散列哈希中
1.1.1.1
routerA => texas,
2.2.2.2
routerB => texas,
3.3.3.3
routerC => california
Run Code Online (Sandbox Code Playgroud)
但是,如果我想获得德州的所有IP地址,我的数据结构可能不够灵活.如果我关心德克萨斯州的所有IP地址,有没有更好的存储方式?
我有这样的哈希:
%hash = ('test' => 1,
'test1' => 2,
'test2' => 3,);
Run Code Online (Sandbox Code Playgroud)
我想对此哈希进行排序并从哈希中删除第一个键值对.如果我这样做,(排序键%hash)[0],我可以访问第一个键.但是,如何删除该键值对?
如果我做
delete (sort keys %hash)[0]
Run Code Online (Sandbox Code Playgroud)
Perl抛出错误,
delete参数不是HASH或ARRAY元素
我有以下示例代码
#!/usr/bin/perl
use strict;
use warnings;
my $b = "Size: 200 GB";
if ($b =~ /Size: (\d+) GB/) {
my $match1 = $1;
print "Match1 : $match1\n";
}
my $match2;
my $c = "Size: GB";
$c =~ /Size: (\d+) GB/;
$match2 = $1;
print "Match2 : $match2\n";
Run Code Online (Sandbox Code Playgroud)
如果我按原样运行此代码,$ match2将获得值200,因为$ 1从前一个块分配了200.如果$ c ="Size:400 GB",则$ match2变为400,因为从这里填充$ 1值:$ c =〜/ Size:(\ d +)GB /; 我可以通过if if语句来解决这个问题:if($ c =〜/ Size:(\ d +)GB /){$ match2 = $ 1; 但是,每次刷新1美元的价值是否有更好的方法?
my %hash;
my $input2 = "message";
#calling subroutine check_something
$self->check_something (%hash, message => $input2);
sub check_something {
my $self = shift;
my %p = @_;
my $message = $p{message};
my %hash = @_;
# do some action with the %hash and $input2;
}
Run Code Online (Sandbox Code Playgroud)
我构建一个哈希(%哈希),并有另一个我想传递给子程序的变量.但是,在子程序中,我正在做的方式"我的%hash = @_"也获得了$ input2的值.我该怎么做才能避免这种情况?
我需要编写一个Perl正则表达式来匹配单词中的数字和字母和数字.示例: test123.我想编写一个只匹配数字部分并捕获它的正则表达式
我正在尝试这个\S*(\d+)\S* ,它只捕获3但不捕获123.
我最近在接受采访时被问到这个问题.让我们假设我有2000台服务器.我想从中央服务器将5GB文件传输到所有这些服务器.想出一个有效的算法.
我的回答:我将使用perl/python将文件从集中式服务器scp到第一台服务器.与此同时,我也将开始向其他服务器发送文件.我觉得一个接一个地做效率非常低,因此并行做会加快.
有一个更好的方法吗 ?