• ベストアンサー

perl 下記スクリプトは正常に動きますか?

今まで長い間、何か勘違いしていたのか、条件が2つ以上になると、 長い間このように書いていたのですが、 if( ($a%2==1 && $b==1) && ($c eq 10 && $d == 5) ) { print "ok"; } 下記スクリプトでも正常に動作しますか? if( $a%2==1 && $b==1 && $c eq 10 && $d == 5){ print "ok"; }

  • elee_f
  • お礼率65% (218/334)
  • Perl
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

どちらも同じ意味です. 同じですが.... $c eq 10 って条件が何をしたいのかわからん. 「どうなるか」はもちろんわかるけど, 「どうしてそう書いたのか」がわからない.

elee_f
質問者

お礼

回答いただきありがとうございます。 ありがとうございます。安心いたしました。 また、ここには、文字列が入ることも想定しています。

その他の回答 (1)

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

動きますね。同じ意味です。

elee_f
質問者

お礼

回答いただきありがとうございます。 ありがとうございます。安心いたしました。

関連するQ&A

  • perlスクリプト

    perlの勉強をしているものです。人様の作ったスクリプトを解析しています。以下のスクリプトについて質問があります。 while(chomp($in = <STDIN>)){ last if ($in eq "\cD"); print "$in"; } このスクリプトに出てきている、"\cD"の意味と、ifの前に出てきているlastの働きが分かりません。またこのスクリプトは全体としてどのような仕事をするのでしょうか?? 分かる方いらっしゃいましたら、ご教授いただけると幸いです。よろしくお願いします。

  • Perlのワンライナーをスクリプトにしたい

    初歩的な質問で恐縮ですが、以下のPerlのワンライナーを、スクリプトファイルに記述するには、どのように書けば良いのでしょうか。 perl -ne "print if ( /aaa/ ); print if ( /bbb/ ); print if ( /ccc/ );" "in.txt" > "out.txt" 下記のようにしてみたのですが、ダメでした。 perl "script.pl" "in.txt" > "out.txt" ----- script.plの内容 ----- print if ( /aaa/ ); print if ( /bbb/ ); print if ( /ccc/ ); --------------------------- 環境はWindowsのコマンドプロンプトです。バッチファイルでの使用を想定しています。 自分はPerlに関する知識が無いので、Perlに関するサイトも見てみたのですが、情報が膨大で、ピンポイントでこの問題を解決する情報を探し出す事が出来ませんでした。 やり方が分かる方がおられましたら、お教え頂けないでしょうか。

    • ベストアンサー
    • Perl
  • perl初心者です。宜しくお願い致します。

    ファイルの容量が大きく。perlを使用してデータの集計をしています。 "A"がきたらflag1をたてなさい。 "B"がきたらflag2をたてなさい。 "C"がきたらflag3をたてなさい。 これでAとBとCを抜き取ること&AからCまでの時間を取得したのですが、 Bの数のmaxの値だけを抜き取りたいのですが、Bがきたときの数をすべて 出力してしまいます。下記の文だと、Bが4回きたら、1,2,3,4と出力してしまいます。 それで4だけを出力したいのですがどのように書き換えたらようか教えて頂けますでしょうか。 '----------------------------------------------------------------------------- open (IN,"< $ARGV[0].txt") or die; open (OUT,"> $ARGV[0]_out.txt") or die; $flag =0; my $a, $b, $c; $count = 0; ####################################################### while($line =<IN>){ ($time,$data) = split(/\s+/,$line); if($data eq "A") { $flag=1; $a = $time; #print OUT $line; #print OUT "\n"; } elsif($data eq "B"){ $flag=2; $count++; $count == $data; print OUT ("$count\n") } #print OUT ("$count\n"); elsif($data eq "C"){ $flag=0; $count=0; $b = $time; $c = $b - $a; print OUT ("time $c\n") } } -------------------------------------------------------------------------------

  • perlでの判定がうまくいきません

    $ref == 0 が正常に判定されていないようです。なぜでしょうか? また、if($tag =~ m/^tag$/ && $ref == 0){について、どのように改良するのが適切でしょうか? $| = 1; my $tag = "tag"; my $ref = "test"; if($ref eq ""){$ref = "0";} $ref =~ s/%([a-f\d]{2})/pack 'H2',$1/egi; if($tag =~ m/^tag$/ && $ref == 0){ print $ref; }

    • ベストアンサー
    • Perl
  • 条件式の書き方について

    $aがaかbかcだった場合という条件式を if($a eq a || $a eq b || $a eq c) とせずに if($a eq aまたはbまたはc) というようにまとめて書くことは無理なんでしょうか?

    • ベストアンサー
    • Perl
  • 【perl】重複した要素だけを書き出すスクリプト

    perlでスクリプトを作っているのですが、 あるリストから重複した要素だけを取り出すってのを 作りたいのですがうまく出来ません。 あるリストの例 a-a:0001 a-b:0002 a-c:0003 a-d:0004 a-b:0002 a-e:0005   ・   ・   ・ この場合 a-bだけを取り出したいんですが躓いています。 ご回答お願いします。

  • perlのデータクリアーがうまく動きません。

    perlのデータクリアーがうまく動きません。 perlでデータからリンクを生成するプログラムを作成しています。 以下のプログラムで動作するようにと思っていたのですがうまく動きません。 $xlkprのデータが$mainlinkぶん蓄積したら、$mainlink分を繰り返し(コピー)してデータ格納させたいのです。 $xliprのクリア my $xlipr = ""; をしてますが、データが残ったままでプログラムは処理されてしまいます。 データ $datfile リンクA リンクB リンクC リンクD リンクE リンクF データが残っているので以下の結果となってしまってます。 格納されるデータ リンクA リンクB リンクA リンクB リンクA リンクB リンクC リンクD リンクA リンクB リンクC リンクD リンクA リンクB リンクC リンクD リンクE リンクF リンクA リンクB リンクC リンクD リンクE リンクF 最終結果 ←この結果となって欲しいです。 リンクA リンクB リンクA リンクB リンクC リンクD リンクC リンクD リンクE リンクF リンクE リンクF 以下のプログラムを載せます。 プログラム (ここから) 略 $mainlink = 2; open(IN,"$datfile")|| die &error(" $datfile を読み込みopen出来ません"); flock(IN,2); @lines = <IN>; close(IN); foreach $line(@lines){ ($seq2,$id,$mail,$temp,$purl,$ttitle,$yo1,$yo2,$yo3) = split("<>", $line); #リンクタグ生成ロジック if ($mainsiteurl eq $purl){ $xlink++; if ($temp eq "1"){$xlkpr .= "<a href=\"$purl/$id\">$ttitle</a>\n";} if ($temp eq "2"){$xlkpr .= "<a href=\"$purl/?$id\">$ttitle</a>\n";} if ($temp eq "3"){$xlkpr .= "<a href=\"$purl/?id=$id&m=$mail\">$ttitle</a>\n";} if ($xlink >= $max){ for($i=1;$i<=$mainlink;$i++){ $print_link2 .= "$xlkpr"; } my $xlipr = ""; $max = $max + $mainlink; } } } 以下略 データ格納処理へ (ここまで) もっと効率の良いプログラムもあるかと思いますが、申し訳ございませんご教授頂きたくよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • zenityを使ったシェルスクリプトについて

    zenityを使ったシェルスクリプトを作りたいのですが、どう書けば良いのかわかりません。ちなみにbashです。 行いたいのはzenityを使って2回質問をし、2回ともOKだった場合に最終的に行いたいコマンドの実行をするというものです。 単純にif文を2回繰り返せば良いのでしょうが、書き方がわかりません。 以下のような具合になるのでしょうか? #!/bin/bash a=$(zenity --question --title "shred" --text "よろしいですか?"); if [ $? -eq 0] then a=$(zenity --question --title "shred" --text "本当によろしいですか?"); if [ $? -eq 0 ] then gedit $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS fi fi

  • FileMaker Proのスクリプト

     FileMaker Proで下記のようなケースでよいスクリプトの組み方があればお教えください。  当方はFileMaker Pro 5.5を使用し、データベースは初心者で、エクセルの感覚からまだぬけられていません。 ---------------- 【ケース】 フィールド甲 フィールド乙 A        A C        A C        A D        A B        B C        B C        B A        A C        A  フィールド甲を参照し、フィールド乙に自動的に「A」か「B」を挿入するスクリプトを組みたいと考えています。  「A」と「B」のみを、フィールド乙に入る特殊な値とします ・最初のレコードのフィールド甲は必ず「A」が入っているとします。 ・フィールド甲を上のレコードから参照し、甲に「B」がでてくるまでフィールド乙に「A」を挿入しつづけます。 ・甲に「B」がでてきたら、そのレコード以下、甲に「A」がでてくるまで乙に「B」を挿入しつづます。 ・甲に再び「A」がでてきたら、甲に次に「B」がでてくるまでフィールド乙に「A」を挿入しつづます。 以上を最終レコードまで続けます。 ----------------  ネットのサイトを見ながら、if、loopを駆使して試みましたが、条件設定が間違っているのか、 うまくいきません。

  • スクリプトがIE6だけ正常に動かない

    スクリプトがIE6だけ正常に動かない 下記のようなブックマークレット用のスクリプトなのですがIE6では動きません. Opera9,Mozilla Firefox1.5では期待通りに作動しました. javascript:(function(){document.body.innerHTML=document.body.innerHTML.replace(/<a\s+href=\x22#\x22\s+onclick=\x22func\d+\w+\(\x27([^\x27]+)\x27[^>]+>/ig,'<a href=\x22$1\x22>$1');})(); やろうとしていることは,次のようなHTMLの記述の文字列を操作したい,というものです. <a href="#" onclick="func01_abc('あいうえお','abc')">LINK</a> 試しにブックマークレットではなく,HTMLに<script>タグで直接スクリプトを記述してテストしてみましたが,やはりIE6だけは作動しません. アドバイスよろしくお願いします.

専門家に質問してみよう