Bash を使用して次のことができます。
for i in 1 2 3 4
do
# Do some operations on $i
print $i
done
値を配列に格納せずに Perl で同様のことを行うことはできますか?
Bash を使用して次のことができます。
for i in 1 2 3 4
do
# Do some operations on $i
print $i
done
値を配列に格納せずに Perl で同様のことを行うことはできますか?
はい。for
リストで動作します。
for my $i (1, 2, 3, 4) {
# Do some operations on $i
print $i
}
ただし、そのようなデータでは、範囲を使用したほうがよいでしょう。(1 .. 4)
はい、perl はそれをサポートしています。Perl では、次のような簡単なリストを作成できます。
for (1..4) {
print $_;
}
たくさんの回答をいただきました。Perlのベスト プラクティス$_
では、 orを使用せず、 と同じ行foreach
に配置するように指示されています。{
for
use strict;
use warnings;
use features qw(say);
for my $i (1, 2, 3, 4) {
say "$i";
}
ただし、これは同じことですが、よりクリーンです。
for my $i ( qw(1 2 3 4) ) {
say $i;
}
ここでは、かっこ内の単語qw
のリストを生成するを使用しています。コンマや引用符さえ必要ありません。
for my $i ( qw(apple baker charlie delta) ) {
say $i;
}
他の人が指摘したように、特定の例では、次を使用できます。
for my $i (1..4) {
say "$i";
}
ただし、BASH または Kornshell でもこれを行うことができます。
for i in {1..4}
do
echo $i #In BASH you have to use "echo". The "print" is a Kornshellism
done
確かにPerlはできます。試してみてください:
for (1..4)
{
# Do some operations on $_
print $_;
}
または$i
、デフォルトの代わりに必要な場合$_
:
for my $i (1..4)
{
# Do some operations on $i
print $i;
}
あなたはそのようなことをすることができます。たとえば、while ループの場合:
use feature qw( say );
my $arg = '';
while ($arg = shift @ARGV) {
say $arg;
}
これは与える:
$ perl tmp.pl arg1 arg2 arg3
arg1
arg2
arg3
これは、ファイルの読み取りやその他の種類の操作でも実行できます。また、 whileループでこの種の処理を可能にするモジュールについて説明しているこの新しいブログ投稿も参照してください。5.html
それを見つけた:
foreach (1,2,3,4)
{
print $_;
}
(1,2,3,4) はまだ配列であることを理解しています。しかし、これは私のニーズに合っています。