小编Zai*_*aid的帖子

数组没有被覆盖

这是一个循环,数组不会被覆盖,它只会增长.

   for ( $j=0; $j <=$#just_ecps ; $j++){
   print "$just_ecps[$j]\n";
   for ($x=0; $x<=$#folder_dates ; $x++){
   my $archivo_histo = "/home/ha2_d11/data/ibprod/archive/$folder_dates[$x]/$just_ecps[$j]/ghistogram.gz";
      next unless (-r $archivo_histo);
      open(FILEHANDLE, "gunzip -c $archivo_histo |") or die ("could not open file $archivo_histo");
      while (<FILEHANDLE>) {
         if ($_ =~ /ave:\s+(\d+\.\d+)\s/){
           push ( @ecp_average , $1);
            sleep 1;
         }
      print "@ecp_average\n";
      }
   }
Run Code Online (Sandbox Code Playgroud)

在每个实例中,最后三个值都是有效的,之前的所有值都是重复的.我需要摆脱重复,只保留最后三个值.

Eislnd1
0.00420743 0.00414601 0.0044511
Eislnd2
0.00420743 0.00414601 0.0044511 0.00303575 0.00309721 0.00302753
Eislnd3
0.00420743 0.00414601 0.0044511 0.00303575 0.00309721 0.00302753 0.0031753 0.00324729 0.00295381
Eislnd4
0.00420743 0.00414601 0.0044511 …
Run Code Online (Sandbox Code Playgroud)

arrays perl

-1
推荐指数
1
解决办法
419
查看次数

随机数组程序吃我的记忆

我想编写一个perl程序来生成具有长度为8的非重复单位数字(随机顺序的数字1-8)和第九个元素作为下划线的数组.我写了这样的代码.我想将这个生成的数组用于基于数字的益智游戏.

@mat = (0,0,0,0,0,0,0,0,0);

sub randgen { 

    $randigit = int(rand(9));

    if ($randigit == 0) {  
        &randgen;   
    }

    elsif (    $mat[0] == $randigit
            || $mat[1] == $randigit
            || $mat[2] == $randigit
            || $mat[3] == $randigit
            || $mat[4] == $randigit
            || $mat[5] == $randigit
            || $mat[6] == $randigit
            || $mat[7] == $randigit
            || $mat[8] == $randigit
          )
    {
        &randgen;
    }
}

&randgen;

for ( $assign = 0; $assign <= 8; $assign++) {

    $mat[$assign] = $randigit;
    print "@mat \n"; # To see to …
Run Code Online (Sandbox Code Playgroud)

arrays random perl

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

为什么Perl认为1 << - 1是9223372036854775808?

如果我理解perldoc perlop正确,这个操作应该是未定义的:

溢出整数范围的结果是未定义的,因为它在C中也是未定义的.换句话说,使用32位整数1 << 32是未定义的.通过负位数移位也是不确定的.


我注意到我的设置中有两件事我无法解释:

  1. 1 << -1返回9223372036854775808without bigintintegerpragma(NaN在它们处于活动状态时返回).

    > perl -le "print 1<<-1"
      9223372036854775808
    
    Run Code Online (Sandbox Code Playgroud)
  2. 1 << -1在测试时返回true defined,无论bigintintegerpragma是否生效

    > perl -le "print 'yes' if defined(1<<-1)"
      yes
    
    > perl -le "use integer; print 'yes' if defined(1<<-1)"
      yes
    
    > perl -le "use bigint; print 'yes' if defined(1<<-1)"
      yes
    
    Run Code Online (Sandbox Code Playgroud)

我的设置细节:

> perl -V
Set up gcc environment - gcc.exe (rubenvb-4.5.4) …
Run Code Online (Sandbox Code Playgroud)

perl bit-shift

-1
推荐指数
1
解决办法
208
查看次数

Perl递归帮助

我正在尝试编写一个计算股票股息的计划.我没有子程序就这样做了.现在,我正在尝试修改它,以便它可以使用递归例程运行.对此有何帮助?因为我不是很擅长这个.

这是原始剧本+可悲的尝试.

print "A stock xyz's price is now $100. It has 3.78% dividend. You have 1000 of it and reinvest the dividend into the stock.\n"; 

my %hash; 
@stocknum = 1000; 
@dividend = 6780; 

while ($#dividend != 20) { 
    $a = $dividend[-1]; 
    $stock = $stocknum[-1]; 
    $div_total= $stock*100*0.0678; 

    $stock_total = $stock + int($a/100); 
    push (@stocknum, $stock_total);  
    push (@dividend, $div_total); 

    if ($#dividend == 20) { 
        last; 
    } 
} 

shift (@dividend); 
$stock_num = $stocknum[-1]; 
$div = $stock_num*100*0.0678; 
push (@dividend, $div); 
@hash{@stocknum} = @dividend; …
Run Code Online (Sandbox Code Playgroud)

perl

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

将多行字符串转换为数组

如何将多行字符串转换为数组?

my $text= " ads da
sda
s 
da
d
as

das
d a as dasd
\n

";
Run Code Online (Sandbox Code Playgroud)

注意:我不想删除或删除换行符?

perl

-2
推荐指数
2
解决办法
2万
查看次数

标签 统计

perl ×5

arrays ×2

bit-shift ×1

random ×1