请参阅oper http://perldoc.perl.org/perlobj.html上的perldoc
根据文档:"重要的是要注意SUPER指的是当前包的超类,而不是指对象的超类."
现在,我处于这样一种情况,我需要SUPER来引用对象的超类.
所以,寻找任何方法来实现它.
这是我的场景:
A是配置服务器,B是客户端.每当B的设置发生任何变化时,它都会将相应的配置文件上传到A.
我是一名自动化工程师,负责自动化.其中一个方案是断开A与网络的连接或停止服务器A.对B执行一些更改并确保B无法将文件上载到配置服务器A.
要使其自动化,请停止服务器A并执行相应操作的简单方法.
由于A和B也被其他方用于其他目的,因此我无法将A或B与网络断开连接或在A处停止服务器.
所以,我期待任何解决方案,以便我可以模拟主机(配置服务器)无法访问的方案.因此,当B将向A发送更新时,它将失败,但实际上A正在照常运行.
请建议我实现它的一些方法.
我使用Perl作为编程语言,但如果有其他语言的解决方案,我很好.
据我所知(从HTTP客户端的角度来看),我们在Perl中提供了LWP和libcurl(WWW :: Curl).我们有什么标准可供选择吗?
我期待了解一些管理属性文件的最佳方法.
我们有一套设备(比如说N).每个设备都具有某些属性.例如,设备A具有属性
A.a11 = valuea11
A.a12 = valuea12
.
设备B具有属性
B.b11 = valueb11
B.b12 = valueb12.
除此之外,它们还具有适用于所有设备的一些共同属性.
X.x11 = valuex11
X.x12 = valuex12
我正在为这些设备上运行一些测试套件编写自动化程序.一次,在单个设备上运行测试脚本.设备名称将作为参数传递.根据设备名称,代码将获取相应的属性和公共属性,并使用这些属性更新设备.例如,对于设备A,代码将获取A.a11,A.a12(特定设备A)和X.x11,X.x12(公共)属性,并在运行测试脚本之前将其上载到设备.
因此,在代码中,我需要管理这些属性,以便只将设备特定和公共属性上传到设备,而忽略其余属性.我这样管理它
if ($device eq 'A') then
upload A's properties
elsif ($device eq 'B') then
upload B's properties
endif
upload Common (X) properties.
Run Code Online (Sandbox Code Playgroud)
随着设备数量的不断增加,以这种方式管理设备变得有点困难.
所以我期待着一些其他最好的方法来管理这些属性.
我正在使用map来提取2D数组的第一个元素.这是一个小代码片段.
my $array = [ [1,11,111], [2,22], undef, [4] ];
my @firstList = map { (defined $_) && $_->[0] } @$array;
Run Code Online (Sandbox Code Playgroud)
所以在这里我期待map返回一个数组,其元素的值为undef或$ array元素的第一个元素.
但输出与我期望的不一样.对于undef,我得到'标量'类型的元素.
如果我用以下块更改map语句,那么我得到了预期的结果.
my @firstList = map { $_->[0] } @$array;
Run Code Online (Sandbox Code Playgroud)
请帮我理解这两个地图陈述.
使用纯XSLT 1.0,我如何有条件地分配节点.我正在尝试这样的事情,但它不起作用.
<xsl:variable name="topcall" select="//topcall"/>
<xsl:variable name="focusedcall" select="//focusedcall" />
<xsl:variable name="firstcall" select="$topcall | $focusedcall"/>
Run Code Online (Sandbox Code Playgroud)
对于变量firstcall
,我正在进行条件节点选择.如果有一个topcall
然后分配给firstcall
,其他人分配firstcall
给focusedcall
.
我正在创建一个具有基类的子类Net::SSH2
.当我试图添加一个类变量时,我收到错误说 -
不是F:\ temp\fooA.pl第17行的HASH引用.
如果我做同样的事情Net::SSH2
那么它工作正常.
这是代码:
use strict;
my $x = Foo->new();
package Foo;
use base qw (Net::SSH2);
sub new {
my ($class, %args) = @_;
my $self = $class->SUPER::new(%args);
$self->{'key'} = 'value';
bless $self, $class;
return $self;
}
Run Code Online (Sandbox Code Playgroud) 我是XML世界的新手.我编写了以下代码来使用XML :: LibXML生成XML.我理解我似乎将命名空间视为属性,我觉得这是不正确的.我不知道该怎么做.所以寻求你的帮助,请纠正我的代码.
XML文档:
<RootDocument protocol="OCI" xmlns="C" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<sessionId xmlns="">172.24.160.8,31436753,1298637565495</sessionId>
<command xsi:type="AuthenticationRequest" xmlns="">
<userId>automation</userId>
</command>
</RootDocument>
Run Code Online (Sandbox Code Playgroud)
Perl脚本:
my $ociRequest = XML::LibXML::Document->new( '1.0', 'utf-8' );
my $root = $ociRequest->createElement ('RootDocument');
$root->addChild ($ociRequest->createAttribute ( protocol => 'OCI' ) );
$root->addChild ($ociRequest->createAttribute ( xmlns => 'C' ) );
$root->addChild ($ociRequest->createAttribute ( 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance' ) );
#$root->setNamespace ('http://www.w3.org/2001/XMLSchema-instance', 'xsi', 0);
$ociRequest->setDocumentElement ($root);
my $session = $ociRequest->createElement ('sessionId');
$session->addChild ($ociRequest->createAttribute ( xmlns => '') );
$session->addChild($ociRequest->createTextNode($sessionID));
$root->addChild($session);
my $command = $ociRequest->createElement ('command');
$command->addChild ($ociRequest->createAttribute …
Run Code Online (Sandbox Code Playgroud) 我们如何识别属于给定分布的所有模块.
例如,XML :: LibXML发行版提供了一组以下模块 https://metacpan.org/release/XML-LibXML
我们如何通过cpan/ppm或每个包的任何标准获得此列表.
实际上我们正在为用Perl编写的代码编写一个单元测试框架.要验证模块,我们需要一种方法来查找给定模块名称的分发名称.
我正在尝试为嵌入式设备用户界面(例如VoIP电话)编写自动化框架.这些设备具有不同的UI,但在逻辑上执行相同的操作.
经过我的分析,似乎就像是,我将开发一个类似于selenium webdriver的框架.Selenium webdriver适用于各种浏览器,而该框架适用于不同的嵌入式设备UI.
我试图了解selenium webdriver的实现.我已经完成了它的javadocs和源代码,但我觉得最好有一个设计文档.
如果您有链接,请告诉我.
感谢您的帮助!!
PS:我将在Python/Perl中开发这个框架.
perl ×8
oop ×2
inheritance ×1
java ×1
networking ×1
properties ×1
selenium ×1
super ×1
webdriver ×1
xml ×1
xpath ×1
xslt ×1