小编ele*_*ora的帖子

perl在查询后将虚拟元素添加到数组中

正如标题所说,perl在查询不存在的元素之后将虚拟元素添加到数组中.查询后数组大小增加.举例说明:

    my $rarr;
    $rarr->[0][0] = 'S';
    $rarr->[0][1] = 'MD';
    $rarr->[1][0] = 'S';
    $rarr->[1][1] = 'PRP';

    my $crulesref;
    $crulesref->[0]  = $rarr;

     check_rule('aa', 0);
     if($rarr->[3][0] == 'M'){  # just check a not existing element
        print "m\n";   
     }

     check_rule('bb', 0);
     if($rarr->[5][0] == 'M'){  # again: just check a not existing element
        print "m\n";
     }
     check_rule('cc', 0);


     sub check_rule($$)
     {
         my ($strg,$ix) = @_;
         my $aref = $crulesref->[$ix];
         my $rule_size = @$aref;
         {print "-----$strg aref:$aref rs:$rule_size aref:'@$aref'\n";
           for(my $t1 = 0; $t1 <$rule_size; $t1++){ …
Run Code Online (Sandbox Code Playgroud)

perl

6
推荐指数
1
解决办法
201
查看次数

使用常量字符串与从文件读取数据时的不同行为

我无法读取UTF-8文件并检测到一些非ASCII字符,如'á'或'ö'.如果我只是用UTF-8字符声明一个常量字符串,一切正常,错误只发生在文件内容上.

我的输入文件如下:

áéíóúöü??ÁÉÍÓÚÖÜ??äÄß
Run Code Online (Sandbox Code Playgroud)

我的perl程序看起来:

use utf8;    
binmode STDOUT, ":utf8";    
my $szo = "áéíóúöü??ÁÉÍÓÚÖÜ??äÄß";    
list($szo);

while(<STDIN>){
chomp;
list($_);
}

sub list($){
  my ($szo) = @_;

  my @arr = split(//, $szo);
  foreach(@arr){
     my $ord = ord($_);
     if($_ eq 'á'){print "á\n";}
     print "isoe elem:$_ ord:$ord \n"; 
  }
}
Run Code Online (Sandbox Code Playgroud)

执行结果如下:

á  
isoe elem:á ord:225   
isoe elem:é ord:233   
isoe elem:í ord:237   
isoe elem:ó ord:243   
....    
isoe elem:ß ord:223   
From here file data, no good:  
isoe elem:Ã ord:195   
isoe elem:¡ ord:161   
isoe elem:Ã ord:195   
isoe elem:© …
Run Code Online (Sandbox Code Playgroud)

perl

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

标签 统计

perl ×2