小编too*_*lic的帖子

在Perl中,我如何按值的频率排序?

我正在尝试创建一个程序来计算数据文件列中出现的不同值.所以,如果列的可能值是A,B,C,那就像是这样的.输出类似于

A   456
B   234
C   344
Run Code Online (Sandbox Code Playgroud)

通过做这样的事情,我已经能够轻松获得A,B和C的运行计数

my %count; 
for my $f (@ffile) {

    open F, $f || die "Cannot open $f: $!";

    while (<F>) {
       chomp;
       my @U = split / /;

       $count{$U[2]}++; 
    }

}
   foreach my $w (sort keys %count) {
         printf $w\t$count{$w};
     }
Run Code Online (Sandbox Code Playgroud)

例如,我在计算给定路径中的文件的第二列.

如何通过计数而不是键(或值A,B,C)对printf的输出进行排序 -

A   456
C   344
B   234
Run Code Online (Sandbox Code Playgroud)

sorting perl key count

5
推荐指数
2
解决办法
1618
查看次数

如何从Perl跟踪中查看变量的值?

我的目标是调试(逐步)sample.pl下面的脚本.

问题:我没有得到变量的实际值($ top_number,$ x,$ total).

我的问题:如何从跟踪输出中查看($ top_number,$ x,$ total)的实数整数值?

perl -d:Trace为了得到数字需要改变什么,而不是:$ top_number,$ x,$ total?

跟踪输出示例:

[root@linux /tmp]# perl -d:Trace ./sample.pl 
>> ./sampl.pl:9: $top_number = 100;
>> ./sampl.pl:10: $x = 1;
>> ./sampl.pl:11: $total = 0;
>> ./sampl.pl:12: while ( $x <= $top_number ) {
>> ./sampl.pl:13:       $total = $total + $x;   # short form: $total += $x;
>> ./sampl.pl:14:       $x += 1;                # do you follow this short form?
>> ./sampl.pl:13:       $total = $total + $x;   # …
Run Code Online (Sandbox Code Playgroud)

perl

5
推荐指数
1
解决办法
846
查看次数

为什么perl oneliner输出取决于开关位置

你能解释为什么perl开关-en不起作用,但-ne工作正常吗?

$ echo 123|perl -en 'print"$_"'
$ echo 123|perl -ne 'print "$_"'
123
$ 
Run Code Online (Sandbox Code Playgroud)

您能否提供一个文档的链接,描述这种行为?

perl

5
推荐指数
3
解决办法
244
查看次数

如何在Perl中为JSON数组指定名称

在我的脚本to_json()中以json格式转换loop_data并分配给$ json.

my $json = to_json(\@loop_data);
print $json;
Run Code Online (Sandbox Code Playgroud)

给出了这个输出.

[
    {
        "Name": "Vivek",
        "Age": 20
    },
    {
        "Name": "Sonali",
        "Age": 19
    }
]
Run Code Online (Sandbox Code Playgroud)

但不是我想要打印$ json来提供此输出.

{"Friends" : [
    {
        "Name": "Vivek",
        "Age": 20
    },
    {
        "Name": "Sonali",
        "Age": 19
    }
]}
Run Code Online (Sandbox Code Playgroud)

在哪里添加"朋友"和{}.

perl json

5
推荐指数
1
解决办法
124
查看次数

在Perl中使用expect,如何使用$object-&gt;expect()方法添加忽略大小写的选项?

这是在 perldoc 中找到的示例:

  $object->expect(15, '-re', "$str");
Run Code Online (Sandbox Code Playgroud)

我想将选项“i”添加到匹配中。这是行不通的:

$object->expect(15, '-re', qr/$str/i);
Run Code Online (Sandbox Code Playgroud)

我必须使用这种格式吗:

 $exp->expect($timeout, [ qr/$str/i, sub {}], $shell_prompt);
Run Code Online (Sandbox Code Playgroud)

perl expect.pm

5
推荐指数
1
解决办法
172
查看次数

Perl正则表达式交替

我有以下字符串:

Data 250 MB
Data 1.5 GB
Data 10 GB
Run Code Online (Sandbox Code Playgroud)

我只需捕获值250 MB, 1.5 GB, 10 GB.所以我写了这个表达

(my $data) = $str1 =~ /Data (\S+ GB|MB)/ or die "$str1\n";

这适用于GB中的数据,但对于MB,我得到了结果Data 250 MB.任何人都可以解释原因吗?

regex perl

5
推荐指数
2
解决办法
454
查看次数

如何使用 perltidy 格式化布尔运算符?

据我所知,perltidy在代码格式化方面非常方便和有帮助。不过我还没有找到微调的方法perltidy。例如,我需要对&&||进行格式化,以便在它们之前和之后有两个空格。像这样:

$some && $x > 7;

我可以做吗?如果是这样,怎么办?

perl perl-tidy

5
推荐指数
1
解决办法
102
查看次数

Perl:使用GetOptions过滤无效参数

我正在使用Perl中的一个小脚本,我在命令行中遇到参数问题.我正在使用GetOps来解析它们,如下面的代码所示:

%params = (
  "help" => "",
  "no_inline" => "",
  "no_dupl" => ""
);

&paramError if (!GetOptions(
  "help" => \$params{"help"},
  "no-inline" => \$params{"no_inline"},
  "no-duplicates" => \$params{"no_dupl"},
));
Run Code Online (Sandbox Code Playgroud)

然后我像这样运行脚本:

> script.pl --no-inline # ok, valid parameter
> script.pl --no-inline blahblah # blahblah is not valid
> script.pl --no-i # not valid
Run Code Online (Sandbox Code Playgroud)

问题是,在第二个和第三个示例中,GetOps表示参数有效.我该怎么办才能使这些参数无效?

parameters perl

4
推荐指数
1
解决办法
1254
查看次数

将模块输出连接到寄存器

我尝试将模块输出连接到寄存器,如下所示:

module test
(
  input rst_n,
  input clk,
  output reg [7:0] count
);
  always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
      count <= 7'h0;
    end else begin
      if(count == 8) begin
        count <= count;
      end else begin
        count <= count + 1'b1;
      end
    end
  end
endmodule

module test_tb;
    reg clk;
    reg rst_n;
    reg [7:0] counter;

    initial begin
        clk = 1'b0;
        rst_n = 1'b0;
        # 10;
        rst_n = 1'b1;
    end
    always begin
        #20 clk <= ~clk;
    end

    test test1 ( …
Run Code Online (Sandbox Code Playgroud)

verilog

4
推荐指数
1
解决办法
7730
查看次数

将整数数组转换为十六进制字符串

我有一个包含一些整数的数组,我想将其转换为十六进制格式的字符串。这是我使用的代码,并且运行良好。我只是想知道是否有更简单的方法来做到这一点。

my @arr = get_tw() ; ##array of integer

for(my $i=0;$i<@arr;$i++){ 

  $arr[$i]= sprintf('%02x',$arr[$i]); ##overwrite with the hex value

} 

my $string  = join('',@arr); ##build a string from a array
Run Code Online (Sandbox Code Playgroud)

perl

4
推荐指数
2
解决办法
2664
查看次数

标签 统计

perl ×9

count ×1

expect.pm ×1

json ×1

key ×1

parameters ×1

perl-tidy ×1

regex ×1

sorting ×1

verilog ×1