-1

Bash を使用して次のことができます。

for i in 1 2 3 4
do
    # Do some operations on $i
    print $i
done

値を配列に格納せずに Perl で同様のことを行うことはできますか?

4

7 に答える 7

7

はい。forリストで動作します。

for my $i (1, 2, 3, 4) {
    # Do some operations on $i
    print $i
}

ただし、そのようなデータでは、範囲を使用したほうがよいでしょう。(1 .. 4)

于 2013-07-15T09:37:45.740 に答える
3

はい、perl はそれをサポートしています。Perl では、次のような簡単なリストを作成できます。

for (1..4) {
    print $_;
}
于 2013-07-15T09:37:30.017 に答える
2

たくさんの回答をいただきました。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
于 2013-07-15T15:31:14.213 に答える
1

確かにPerlはできます。試してみてください:

for (1..4)
{
    # Do some operations on $_
    print $_;   
}

または$i、デフォルトの代わりに必要な場合$_:

for my $i (1..4)
{
    # Do some operations on $i
    print $i;
}
于 2013-07-15T09:37:57.613 に答える
-1

あなたはそのようなことをすることができます。たとえば、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

于 2013-07-15T09:43:48.050 に答える
-1

それを見つけた:

foreach (1,2,3,4)
{
    print $_;
}

(1,2,3,4) はまだ配列であることを理解しています。しかし、これは私のニーズに合っています。

于 2013-07-15T09:38:07.067 に答える