C言語で以下のような無限ループプログラム と同じことを perl でやりたいのですが、できず困っています。
#!/bin/usr/perl
use strict;
use warnings;
my $flag=0;
do{
print "endless\n";
next;
}while(!$flag);
http://www.tohoho-web.com/wwwperl1.htm#next
#!/bin/usr/perl
use strict;
use warnings;
my $flag=0;
do{
print "endless\n";
next;
}while(!$flag);
×continueに該当する構文はないmarch3 さんが書きました:C言語のcontinueに該当する構文はperlにないのでしょうか?
http://www.tohoho-web.com/wwwperl1.htm#next
(http://ja.wikibooks.org/wiki/Perl/%E5%8 ... C_do-until)doブロックにwhileが後置された場合は、まずdoブロックが一度実行されてから、whileの条件部が評価されます。doブロックはループではないので、後述するループ制御コマンドを用いることはできません。LABELを付ける事も出来ません。
そのようですね。公式ドキュメント(perldoc)でも該当の記述を確認したので、間違いない情報だと思います。みけCAT さんが書きました: ×continueに該当する構文はない
○do~whileに該当するループ構文はない
のようです。
また、対策も公式に書いてある方法と同じなので、{{}}で行きたいと思います。do BLOCK はループとしては 扱われません; 従って、next, last, redo といったループ制御文はブロックから抜けたり 再開することはできません。 その他の戦略については perlsyn を参照してください。
http://perldoc.jp/func/do
ループ制御文は if や unless 中では動作しません。 なぜならそこはループではないからです。 しかし中かっこを二重にしてこれに対処することはできます。
http://perldoc.jp/docs/perl/5.8.8/perls ... p32Control