小编zdi*_*dim的帖子

将文件句柄变量从 STDOUT 重新分配给没有 undef() 的文件时,Perl 的奇怪行为

执行以下简化代码时:

use strict;                                          # [01]
use warnings FATAL => 'unopened';                    # [02]
                                                     # [03]
my ($inHandle, $outHandle) = (\*STDIN, \*STDOUT);    # [04]
print $outHandle "STDOUT  1\n";                      # [05]
                                                     # [06]
# $outHandle re-assigned to outputA.txt ???          # [07]
open($outHandle, ">outputA.txt") or die ("A: $!\n"); # [08]
print $outHandle "FILE A\n";                         # [09]
print             "STDOUT? 2\n";                     # [10]
print STDOUT      "STDOUT  3\n";                     # [11]
close $outHandle;                                    # [12]
                                                     # [13]
# $outHandle is closed                               # [14]
print STDOUT      "STDOUT  4\n";                     # …
Run Code Online (Sandbox Code Playgroud)

perl warnings stdout filehandle

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

当我试图在搜索到的字符后查找字符时,Perl 正在返回哈希

我想在字符串中搜索给定的字符并返回它后面的字符。

根据此处的帖子,我尝试写作

my $string = 'v' . '2';
my $char = $string =~ 'v'.{0,1};
print $char;
Run Code Online (Sandbox Code Playgroud)

但这会返回 1 和一个哈希值(我上次运行它时,确切的输出是 1HASH(0x11823a498))。有谁知道为什么它返回一个散列而不是字符?

regex perl

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

如何解决 Perl eval() 中的“发现裸字”问题

以下代码返回“在 (eval 1) 第 1 行,靠近“*,out”的操作符预期位置找到了裸字(out 之前缺少操作符?)”

$val = 0;
$name = "abc";
$myStr = '$val = ($name =~ in.*,out [)';
eval($myStr);
Run Code Online (Sandbox Code Playgroud)

根据我的理解,我可以通过用“//”包装“in.*,out [”块来解决这个问题。

但是“in.*,out [”可以变化。(例如:用户输入)。用户可能会错过给出“//”。因此,还有其他方法来处理这个问题吗?(例如:如果 eval() 尝试返回“在...处找到裸字”,则返回 0)

regex perl eval

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

List context and the comma operator in Perl

Having some significant confusion about what it means to "evaluate in list context", specifically related to the comma operator. In the linked perlop doc, it says: In list context, it's just the list argument separator, and inserts both its arguments into the list. However, the code

@y = 9, 8, 7, 6;
say @y, ', ', scalar @y;
Run Code Online (Sandbox Code Playgroud)

gives output 9, 1. This respects the fact that, when used as a binary operator on scalar values (?), the …

perl scalar list operator-precedence comma-operator

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

查找数组中最低值的索引

我有3个数组,@energy, @es_energy and @hb_energy每个数组都使用相同的名称索引[$k].

我想找到最低值@energy,然后使用该索引值查找其他数组中的相应值.

目前我正在使用 my $n = nmin_by { $energy[$_] } 0 .. $#energy;

然后$n用于从其他数组输出.但是,我不想使用,nmin_by因为它需要额外的库来下载我正在使用的软件包(管理问题的负载).

有什么建议?

arrays sorting perl

0
推荐指数
1
解决办法
225
查看次数

如何将数组的每个元素添加到另一个数组的每个元素?

我有这些数组集,每个数组有两个元素。

@a = ("a", "b");

@i = (1, 2);

@s = ( "\\!", "\?");
Run Code Online (Sandbox Code Playgroud)

我如何使结果返回

a1!, b2?

我需要它们成为一组新的数组,例如

@new =(a1!,b2?)
Run Code Online (Sandbox Code Playgroud)

我写了输出答案的代码

$i = length(@a);

for (0..$1) {

    @array = push(@array, @a[$i], @s[$i];

}

print @array;
Run Code Online (Sandbox Code Playgroud)

然而,它只返回

syntax error at pra.pl line 10, near "];"
Run Code Online (Sandbox Code Playgroud)

先感谢您。

arrays perl

0
推荐指数
1
解决办法
334
查看次数

Perl Grep命令在数组中搜索

我正在使用Perl和grep命令在数组输出中查找模式。我有兴趣在数组中搜索以下文本:

/tmp/12345.hash

12345也能像数字的任何序列234567889,但/tmp/.hash将是一致的。我对regex不太满意,因此不确定如何构建正确的regex语句。

@line = grep /hash/, @exp;
Run Code Online (Sandbox Code Playgroud)

我最初的搜索只是看单词hash,但在其他行上匹配,结果我得到了错误的结果。

regex perl grep

0
推荐指数
1
解决办法
120
查看次数

处理带有嵌入式 UNIX 换行符的固定长度记录

我收到的文本文件是固定长度字段和回车/换行符分隔记录 ( CRLF)。最近,其中一个文本字段开始在记录 ( ) 中出现换行符LF。这显然在我们的 unix 服务器上造成了一些问题。

LF我想简单地在文件中查找 的使用并将其替换为单个空格,但这显然会干扰 Windows 换行符。

我已经尝试过trperl但似乎不太正确:

cat badinput.txt | perl -p -e 's/\x0D\x0A/\x0D/' | perl -p -e 's/\0A/ /' | perl -p -e 's/\x0D/\x0D\x0A/' > goodoutput.txt
Run Code Online (Sandbox Code Playgroud)

这个想法是

  • CRLF用。。。来代替CR
  • LF用。。。来代替
  • CR用。。。来代替CRLF

由于某种原因,我不太明白 CR -> CRLF 转换。

建议?

regex perl newline

0
推荐指数
1
解决办法
148
查看次数

使用 Perl 拆分功能保留(捕获)一些分隔符并丢弃其他分隔符

假设我正在使用 Perl 的 split 函数来拆分文件的内容。

例如:

这个 foo 文件有+一堆;(随机)“那个”地方的东西

所以假设我想使用空格和分号作为分隔符。

所以我会使用类似的东西:

split(/([\s+\;])/, $fooString)
Run Code Online (Sandbox Code Playgroud)

我无法找出一种语法(或者即使它存在)来捕获分号并丢弃空格。

regex perl

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

对UTF-8输入进行排序

我需要从文件中排序行,保存为UTF-8.这些行可以以西里尔字母或拉丁字符开头.我的代码在西里尔字母上工作错误.

sub sort_by_default  {
    my @sorted_lines = sort {
        $a <=> $b
          ||
        fc( $a) cmp fc($b)
     } @_;
}
Run Code Online (Sandbox Code Playgroud)

perl utf-8

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

如何使用HTML :: TreeBuilder从html表中提取特定行

我是perl编程的新手,现在陷入了非常严重的困难.实际上我必须解析一个包含单个表的html文件,我必须从那里提取一行,其中一个列条目是我所知道的.

我的html文件看起来像这样 -

many previous rows description in html format....

<td>some_value_default</td>
<td>0x0</td>
<td><a href="something" target="xyz">something</a></td>
<td>abcd</td>

//*

<tr><a name="Maximum_Capacity"></a>

<td>some 23:4</td>
<td>some_27: 15</td>
<td>24:29</td>
<td>17</td>
<td colspan=3>Maximum_Capacity</td>
<td colspan=5>
some commonly use value are:  24:31|25:67|677:89|xyz abc    
</td>
//*

<td>some_value_default</td>
<td> 0x0</td>
<td><a href="something.html" target="ren">sometext</a></td>
<td>again some text</td>

description of many rows in html afterwards...
Run Code Online (Sandbox Code Playgroud)

//*之间的行表示我想要获取的行.我想使用它中包含的信息.如何在数组中获取该行,以便每个列条目都存储为数组元素.

请大家试着帮助我.

html perl html-table

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

如果声明失败

好吧,我有这行代码,我无法弄清楚,如果有人可以帮助我,这将是伟大的.我正在制作一个地理位置perl脚本作为我项目的一部分.

这是代码行

$isps = $info->{'isp'};

if ($isps = "Time Warner Cable")
 {

  print "Isp found, go to $website for more information\n";       
}

if ($isps = "Google") {

    print "Isp found, go to $website for more information\n";       
} else {

    print "No ISP located! No way of Contact via this terminal!";
}
Run Code Online (Sandbox Code Playgroud)

好吧基本上我正在尝试使if语句读取JSON代码并使其在列出特定名称时打印某些文本.我正在向文件添加更多的ISP,但现在只是这两个.

如果有人能用这行代码帮助我,因为我真的无法弄明白.

perl json

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