执行以下简化代码时:
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) 我想在字符串中搜索给定的字符并返回它后面的字符。
根据此处的帖子,我尝试写作
my $string = 'v' . '2';
my $char = $string =~ 'v'.{0,1};
print $char;
Run Code Online (Sandbox Code Playgroud)
但这会返回 1 和一个哈希值(我上次运行它时,确切的输出是 1HASH(0x11823a498))。有谁知道为什么它返回一个散列而不是字符?
以下代码返回“在 (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)
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 …
我有3个数组,@energy, @es_energy and @hb_energy每个数组都使用相同的名称索引[$k].
我想找到最低值@energy,然后使用该索引值查找其他数组中的相应值.
目前我正在使用 my $n = nmin_by { $energy[$_] } 0 .. $#energy;
然后$n用于从其他数组输出.但是,我不想使用,nmin_by因为它需要额外的库来下载我正在使用的软件包(管理问题的负载).
有什么建议?
我有这些数组集,每个数组有两个元素。
@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)
先感谢您。
我正在使用Perl和grep命令在数组输出中查找模式。我有兴趣在数组中搜索以下文本:
/tmp/12345.hash
在12345也能像数字的任何序列234或567889,但/tmp/和.hash将是一致的。我对regex不太满意,因此不确定如何构建正确的regex语句。
@line = grep /hash/, @exp;
Run Code Online (Sandbox Code Playgroud)
我最初的搜索只是看单词hash,但在其他行上匹配,结果我得到了错误的结果。
我收到的文本文件是固定长度字段和回车/换行符分隔记录 ( CRLF)。最近,其中一个文本字段开始在记录 ( ) 中出现换行符LF。这显然在我们的 unix 服务器上造成了一些问题。
LF我想简单地在文件中查找 的使用并将其替换为单个空格,但这显然会干扰 Windows 换行符。
我已经尝试过tr,perl但似乎不太正确:
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用。。。来代替CRLF用。。。来代替 CR用。。。来代替CRLF由于某种原因,我不太明白 CR -> CRLF 转换。
建议?
假设我正在使用 Perl 的 split 函数来拆分文件的内容。
例如:
这个 foo 文件有+一堆;(随机)“那个”地方的东西
所以假设我想使用空格和分号作为分隔符。
所以我会使用类似的东西:
split(/([\s+\;])/, $fooString)
Run Code Online (Sandbox Code Playgroud)
我无法找出一种语法(或者即使它存在)来捕获分号并丢弃空格。
我需要从文件中排序行,保存为UTF-8.这些行可以以西里尔字母或拉丁字符开头.我的代码在西里尔字母上工作错误.
sub sort_by_default {
my @sorted_lines = sort {
$a <=> $b
||
fc( $a) cmp fc($b)
} @_;
}
Run Code Online (Sandbox Code Playgroud) 我是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)
//*之间的行表示我想要获取的行.我想使用它中包含的信息.如何在数组中获取该行,以便每个列条目都存储为数组元素.
请大家试着帮助我.
好吧,我有这行代码,我无法弄清楚,如果有人可以帮助我,这将是伟大的.我正在制作一个地理位置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,但现在只是这两个.
如果有人能用这行代码帮助我,因为我真的无法弄明白.