Perl syntaxt到vb.net转换需要帮助

时间:2015-02-27 03:46:34

标签: vb.net perl

我正在寻求帮助来理解Perl语法。我正在尝试将电话Perl脚本转换为vb.net,我很难理解发生了什么。尝试在网上查看Perl中的下面代码,例如动态创建变量,胖逗号等等,只是在旋转我的脑袋。

因此,在下面的Perl代码片段中,某种字符串被组合,发送到电话交换机以获取电话429的状态。如果状态不是" V"字符串被清理,脚本移动到下一组指令。

有人可以将此代码段翻译成vb.net吗?

提前谢谢!

  foreach my $class (1 .. 9) { $sess->AddMsgClass( CLASS => $class ); }
  my %filter = ( NUMFIELDS=>2, CONDITION1=>1, NUM1=>ord("I"), CONDITION2=>1, NUM2=>429 );
  $sess->AddCompoundFilter( ID=>"DEST", FIELD1=>5, FIELD2=>6, (%filter) );
  $sess->AddCompoundFilter( ID=>"ORIG", FIELD1=>3, FIELD2=>4, (%filter));
  $sess->AddCompoundFilter( ID=>"EVENTS", FIELD1=>18, FIELD2=>19, (%filter));

  my $e = $sess->EquipmentStatus( SUBTYPE=>"ESR", EQUIPTYPE=>"I", EQUIPMENT=>429 );
  if ($e->{"STATUS"} ne "V") {
    foreach my $class (1 .. 9) { $sess->DelMsgClass( CLASS => $class ); }
    foreach my $filter ( "DEST", "ORIG", "EVENTS" ) { $sess->DelCompoundFilter( ID => $filter ); } 

}

1 个答案:

答案 0 :(得分:0)

foreach my $class (1 .. 9) { $sess->AddMsgClass( CLASS => $class ); }

1..9是范围运算符。想象一下数字列表,1,2,3,4,5,6,7,8,9。foreach依次获取每个数字,将其分配给变量$ class,然后执行块中的所有操作(接下来是一组花括号),这是:$ sess-> AddMsgClass(CLASS => $ class)。 $ sess应该是对具有名为" AddMessageClass"的方法的类实例的引用。 - 所以它调用该方法,作为参数传递键值对CLASS和$ class的值(第一次为1,然后是第二次,等等。

然后是下一行:

my %filter = ( NUMFIELDS=>2, CONDITION1=>1, NUM1=>ord("I"), CONDITION2=>1, NUM2=>429 );

声明并定义哈希(与VB中的词典相同)。哈希作为一个整体被称为%过滤器,但如果你想获得其中一个键的值,请使用:$ filter {' NUMFIELDS'}(等于2)

接下来的三行基本相同:

$sess->AddCompoundFilter( ID=>"DEST", FIELD1=>5, FIELD2=>6, (%filter) );

它使用与第1行相同的$ sess对象,但这次它调用该对象上的AddCompoundFilter方法。作为参数,它传递一个字典对象,该对象由三个键值对组成,ID =>' DEST',FIELD1 => 5,FIELD2 => 6以及所有键值对在上面的行中的%filter中定义。这就像合并两个字典对象并将结果作为参数传递一样。

然后这一行:

  my $e = $sess->EquipmentStatus( SUBTYPE=>"ESR", EQUIPTYPE=>"I", EQUIPMENT=>429 );

同一个$ sess对象也有一个名为" EquipmentStatus"的方法。它调用该方法,将具有三个键值对的另一个字典作为参数传递。该方法返回一个赋值给变量$ e的值。 "我的"只是声明变量。

然后是下一行:

  if ($e->{"STATUS"} ne "V") {

$ e是我们从上面的方法调用中获得的变量。显然它是一个对象引用或者可能只是一个哈希(字典)引用。在任何情况下,它都会查找其STATUS属性的值,并使用字符串比较将其与字母" V"进行比较。 " ne"是字符串比较 - 确保双方都被解释为字符串。如果说过"!="然后他们会被转换为数字。

我希望有所帮助!

Perl有一点学习曲线但是它非常值得。

(已编辑添加更多内容)