ページ 1 / 1
C言語とperl
Posted: 2014年11月01日(土) 14:32
by march3
初歩的な質問ですみません。
C言語で以下のような無限ループプログラム
コード:
#include <stdio.h>
int main(void){
int flag=0;
do{
puts("endless");
continue;
}while(!flag);
}
と同じことを perl でやりたいのですが、できず困っています。
コード:
#!/bin/usr/perl
use strict;
use warnings;
my $flag=0;
do{
print "endless\n";
next;
}while(!$flag);
C言語のcontinueに該当する構文はperlにないのでしょうか?
http://www.tohoho-web.com/wwwperl1.htm#next
Re: C言語とperl
Posted: 2014年11月01日(土) 16:00
by sleep
目的と合っているかどうか分かりませんが
do ~ while の { } を2重にする( {{ }} )と似たような動作になると思います。
Re: C言語とperl
Posted: 2014年11月01日(土) 21:40
by みけCAT
×continueに該当する構文はない
○do~whileに該当するループ構文はない
のようです。
doブロックにwhileが後置された場合は、まずdoブロックが一度実行されてから、whileの条件部が評価されます。doブロックはループではないので、後述するループ制御コマンドを用いることはできません。LABELを付ける事も出来ません。
(
http://ja.wikibooks.org/wiki/Perl/%E5%8 ... C_do-until)
Re: C言語とperl
Posted: 2014年11月02日(日) 00:16
by march3
返信くれたお二方ともありがとうございます。
みけCAT さんが書きました:
×continueに該当する構文はない
○do~whileに該当するループ構文はない
のようです。
そのようですね。公式ドキュメント(perldoc)でも該当の記述を確認したので、間違いない情報だと思います。
do BLOCK はループとしては 扱われません; 従って、next, last, redo といったループ制御文はブロックから抜けたり 再開することはできません。 その他の戦略については perlsyn を参照してください。
http://perldoc.jp/func/do
また、対策も公式に書いてある方法と同じなので、{{}}で行きたいと思います。