- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 perl 编程非常陌生。
在阅读循环时,对于 foreach 循环,我得到了两个示例。
一个例子是,
foreach ('hickory','dickory','doc') {
print $_;
print "\n";
}
hickory
dickory
doc
foreach ('hickory','dickory','doc') {
print;
print "\n";
}
hickory
dickory
doc
最佳答案
您关于 print
的问题在 foreach
正在回答,这里有更多关于 $_
的信息.
来自 General Variables in perlvar
Here are the places where Perl will assume
$_
even if you don't use it:
The following functions use
$_
as a default argument:
- abs, alarm, chomp, chop, chr, chroot, cos, defined, eval, evalbytes, exp, fc, glob, hex, int, lc, lcfirst, length, log, lstat, mkdir, oct, ord, pos, print, printf, quotemeta, readlink, readpipe, ref, require, reverse (in scalar context only), rmdir, say, sin, split (for its second argument), sqrt, stat, study, uc, ucfirst, unlink, unpack.
All file tests (
-f
,-d
) except for-t
, which defaults to STDIN. See-X
The pattern matching operations
m//
,s///
andtr///
(akay///
) when used without an=~
operator.The default iterator variable in a
foreach
loop if no other variable is supplied.The implicit iterator variable in the
grep()
andmap()
functions.The implicit variable of
given()
.The default place to put the next value or input record when a
<FH>
,readline
,readdir
oreach
operation's result is tested by itself as the sole criterion of awhile
test. Outside awhile
test, this will not happen.
$_
is by default a global variable.
#
开头的行。 (评论),而对于其他人想用空格将它们分成单词。
open my $fh, '<', $file or die "Can't open $file: $!";
while (<$fh>)
{
next if not /\S/;
next if /^\s*#/;
my @words = split;
# do something with @words ...
}
$_
有多少用途在上面的例子中。这是一个等效的程序
while (my $line = <$fh>)
{
next if not $line =~ m/\S/; # if not matching any non-space character
next if $line =~ m/^\s*#/; # if matching # after only (possible) spaces
my @words = split ' ', $line; # split $line by ' ' (any white space)
# do something with @words ...
}
<$fh>
在 while
条件分配给 $_
,然后在循环中可用。 $_
. m
本身可以被丢弃。 split
默认拆分 $_
.我们还使用另一个默认值,作为分割字符串的模式,即 ' '
(任何数量的任何空白)。 $line = <$fh>
与 $_
的交易关闭(在循环中未定义),我们必须使用 $line
到处。所以要么这样做,要么做 while (<$fh>)
并使用 $_
. use List::Util 'max';
my $longest_cap = max map { length } grep { /^[A-Z]/ } @words;
@words
中的列表并将块应用于每个元素。每个元素都分配给
$_
并且因此可用于块内的代码作为
$_
.这是正则表达式默认使用的。满足条件的传递给
map ,它也迭代将它们分配给
$_
,当然是
length 的默认值.最后
max
来自
List::Util选择最大的一个。
$_
从未真正写入,也不需要临时变量。
while (<$fh>)
以及各种相关的事情。正则表达式部分在
Regexp Quote-Like Operators in perlop并在
perlretut .也看看
split .
$_
或者不,因为人们总是可以引入一个词法变量而不是它。
$_
作为默认值(不需要写),什么时候不写?
$_
特别是,可以使代码更清晰、更易读。通常意味着更好的代码。但是很可能把它推得太远,最终得到晦涩、棘手和脆弱的代码。所以需要好味道。
$_
对于它们的默认值,而在其他地方则必须使用
$_
明确地。我会说如果
$_
在一段代码中出现不止一次或两次,这意味着应该有一个正确命名的变量。
关于perl - foreach 语句中的值是如何打印的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41778211/
这是一个假设性问题。如果我有来自 3 个单独的 sql db 查询的 3 个数组,这些查询都与另一个数组相关。例如…… //db schools id | school_name classes id
在我的应用程序中,我使用 scrape(string url) 方法从网页中抓取链接。可以说它每次都返回我 10 个 url。 我想从每个抓取的 url 中抓取 10 个链接。 长话短说: (第 1
我的java7代码: final Map result = new HashMap<>(); final Set> classes = getClasses(co.glue()); for (fina
是否可以在 SwiftUI 中设置变量,例如在这样的 ForEach 中: struct ContentView: View { var test: Int var body: som
在 D、int、uint 中使用 foreach 时,循环索引的首选类型是什么?或者只是通过省略类型自动实现? 最佳答案 一般来说,索引应该是size_t。与长度相同。如果您尝试使用 int 或 ui
根据 http://dlang.org/statement.html 的“Foreach 限制”部分以下代码 int[] a; int[] b; foreach (int i; a) { a
在什么情况下我们应该在 JDK 8 中使用旧的 foreach 循环遍历新的 collection.forEach() 还是最好的做法是转换 every foreach 循环?是否存在任何重要的性能差
获得类似东西的惯用方法是什么? ((fn [coll] (function-body)) [:a :b :c :d]) -> [[:a :b][:a :c][:a :d][:b :c][:b :d][
我正在创建一个基于 who is it? 的 Java 应用程序。现在我正在制作一种方法,在回答问题时我需要其他卡片。 我有两个列表: 列表是一个 ImageView 列表,其中我有卡片必须代表的 2
我希望有人能在我发疯之前帮助我。 我有 3 张 table : Table A SELECT companypk, companyname, logo, msscope FROM global_com
我正在尝试将多个字符串添加到 C# 中的 MailAddress。 如果我使用ForEach,我的代码会是这样 foreach (var item in GetPeopleList()
我没有太多的 C# 经验,所以如果有人能指出正确的方向,我将不胜感激。我有一个引用对象变量的 foreach 循环。我希望在主循环中创建另一个 foreach 循环,将当前变量与对象数组中的其余变量进
下面的代码每 60 秒删除文件夹“Images”中的文件,它可以工作,但是当文件夹为空时它会显示:警告:为 foreach() 提供的参数无效如果没有文件,如何解决这个问题,说“文件夹为空而不是那个警
我需要在两种不同的模式下运行,因此“if”(第二个稍后构建一个大的 csv) 下面对于单个实例运行正常,但在第二个 (*) 的加载时间上失败,因为在前 7k 行中的每一行上运行。 我想避免可怕的事情
我们可以使用以下两种方法实现类数组对象的迭代: let arrayLike = document.getElementsByClassName('dummy'); [].forEach.call(ar
我有这个代码 ... 它说: Attribute value invalid for tag forEach according to TLD 最佳答案 forEach标签不支持 valu
我在 SwiftUI 中有一个像这样的 ForEach: ForEach(entries) { (e: MyType) in NavigationLinkItem(entry: e) } 现在我
我无法在一个 Foreach 或 Foreach-Object 循环中使用多个命令 我的情况是—— 我有很多文本文件,大约 100 个。 所以他们被阅读 Get-ChildItem $FilePath
我必须从 json 文件(实际上是 2 个 json 文件)执行 ForEach,因此我执行 2 forEach,代码是 table { font-family: arial, sans-
我对编程很陌生,当我执行 forEach 函数时,我的应用程序返回错误。我的controller.js中有以下代码 $scope.ajaxRequest = A.Game.get({action: '
我是一名优秀的程序员,十分优秀!