Perl初心者が配列に値を入れる方法

このQ&Aのポイント
  • Perl初心者が配列に値を入れる方法について、上書き保存をするためのテキストデータの編集方法やデータの送信方法について解説します。
  • テキストデータファイルの編集やHTMLの作成方法、データの読み込みや配列への値の格納方法、変数への代入方法について解説します。
  • Perl初心者による配列への値の格納や上書き保存の方法に関する問題について、解決策や対処法を提案します。
回答を見る
  • ベストアンサー

配列に値を入れたいのですが・・

Perlは超初心者です。 既存テキストデータファイルを編集して、上書き保存できるようしたくて、次のようなテキストデータを ===== 山田 田中 加藤  ・  ・ ===== 読込んで、次のようなHTMLを作成する様にしました。 <input type='text' name='name[0]' value='山田'> <input type='text' name='name[1]' value='田中'> <input type='text' name='name[2]' value='加藤'>             ・             ・ ここから、テキストボックスの値を編集して、Submitで別Perlプログラムにデータを送信し、次のようなプログラムでデータを読込めば ======================================================================== $count = $in{'count'}; #データのレコード件数です。ここは問題ありません。 for($x=0;$x<=$count;$x++){ $simei[x]=$in{'name[x]'}; } ======================================================================== $simei[0]=山田、$simei[1]=田中、$simei[2]=加藤、・・・と配列変数に入って、それをファイルに上書きするつもりだったのですが、変数には何も代入されないようです。 どうすれば、私の思うようになるでしょうか?

  • Perl
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

配列に入れることは無理です。perlではなく、HTML/FORMの制限です。 配列は普通の文字に展開して、perlで受け取ったときに配列に分解してください。 for($x=0;$x<=$count;$x++){ $simei[$x]=$in{"name_$x"}; } input の nameも同様にすれば OKでしょう。

souta_n
質問者

お礼

先の質問から引続きありがとうございます。 早速作成するHTMLを <input type='text' name='name[0]' value='山田'> を <input type='text' name='name_1' value='山田'> に for($x=0;$x<=$count;$x++){ $simei[x]=$in{'name[x]'}; } を for($x=0;$x<=$count;$x++){ $simei[$x]=$in{"name_$x"}; } にして実行してみましたが、やはり値を取得しません。 困ったな・・・ データをアップデートする方法の考え方自体おかしいのでしょうか? 一般的にはどんなふうにこの処理を行うのでしょうか?

その他の回答 (1)

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.2

巧くいかないですか...。私は実際この方法で巧くいってるのですが。 そうなると $in{}にちゃんと展開されているか、という問題になりますね。 while (($name, $value) = each(%in)) { print "$name = $value\n"; } で値がどういう風に格納されているか確認してください。 あと念のため。 > <input type='text' name='name_1' value='山田'> に > for($x=0;$x<=$count;$x++){ > $simei[$x]=$in{"name_$x"}; > } $x は 0から始まっているので、HTMLのname は name_0 にしないと、ですね。

souta_n
質問者

お礼

その後、いろいろ変更してやってみて、何とかうまく値を取得できました。おっしゃっていたとおりでした。 ありがとうございました。 感謝!感謝です。少々とろいのでいらいらするかもしれませんが、質問を上げたときは宜しくお願いします。

souta_n
質問者

補足

in{}にはデータが展開されていました。 ということは、それが配列に格納されないというところですね。う~ん、あれこれ試してみます。 すみませんね。何から何までお世話になります。

関連するQ&A

  • テキストボックスの値で配列の値を求めるには?

    やりたいと思っているのは、 (1) "INPUT" の値を入力。 (2) "koteichi" は他からの参照値。 (3) "goukei"に(1)と(2)の合計値。 (4) "total" に(3)の値に該当する配列の値。 (実際には配列の値を代入した式の答え。) という流れになります。 (3)まではなんとか分かるのですが、 (4)はどのように配列の値を代入すればいいのかが 分かりません。  なにぶん最近始めた初心者なので不規則な値は配列を使えばいいと解釈したのですが、まったく使い方を間違えているのでしょうか? こういった場合は別のやり方があるのでしょうか? どなたかよろしくお願いします。 <SCRIPT language=JavaScript1.1> <!-- rank = new Array(6); rank[0]=0; rank[1]=5;[rank2]=8;[rank3]=12;rank[4]=16;rank[5]=22; function calc(){ document.myform.goukei.innerText = eval(document.myform.INPUT.value) +eval(document.myform.koteichi.value); } // --> </SCRIPT> </HEAD> <BODY> <form name="myform"> <INPUT size="20" type="text" name="INPUT" value="0" onchange="calc()"/>+<INPUT size="20" type="text" name="koteichi" value="10">=<INPUT size="20" type="text" name="goukei" value="0"> <INPUT size="20" type="text" name="total" value="0"> </FORM> </BODY>

  • formタグ

    HTMLで、formを使用し、CGIへテキストエリアのデータをpostしたいと 考えております。 テキストエリアを3つ、ボタンを1つ設けるならば 通常以下のようにすると思います。(必要部分の抜粋) <form action="foo1.cgi" method="post" ENCTYPE="multipart/form-data"> <input type="text" name="text1" value="text1" size=50 maxlength=100> <input type="text" name="text2" value="text2" size=50 maxlength=100> <input type="text" name="text3" value="text3" size=50 maxlength=100> <input type="submit" name="aaa" value="実行"> </form> こうすると、実行ボタンをクリックすると、text1、text2、text3のテキストエリアに 記述されているテキストが送信されますが、ここにボタンをもう一つ設け、 上記3つのデータを別のCGIに送信したいのですが、 この場合どのようにHTMLを記述したらよいでしょうか? 新たに下記のようにformタグを設けると、テキストエリアは6つになってしまいますし。。。 <form action="foo2.cgi" method="post" ENCTYPE="multipart/form-data"> <input type="text" name="text1" value="text1" size=50 maxlength=100> <input type="text" name="text2" value="text2" size=50 maxlength=100> <input type="text" name="text3" value="text3" size=50 maxlength=100> <input type="submit" name="aaa" value="実行2"> </form> どなたか分かる方情報頂けますか。

    • ベストアンサー
    • HTML
  • PHPでフォームからの送信

    PHPでフォームからデータを送信する方法について教えてください。例えばPHPファイルの中に下の様にフォームを作成して、送信ボタンを2つ作ります。一つのボタンをクリックすると全てのフォームの情報が送信されてしまいますが、独立して送信できるようにはできないのでしょうか。簡単にでもできるかできないかを教えていただけましたら、あとは自分でなんとかがんばりますので、どなたか教えていただけれますと幸いです。宜しくお願いします。 <form action="abc.php" method="post"> AAA:<input type="text" name="simei"> BBB:<input type="password" name="pass"> <input type="submit" value="送信"> </form> <form action="abc.php" method="post"> CCC:<input type="text" name="simei"> DDD:<input type="text" name="pass"> <input type="submit" value="送信"> </form>

    • ベストアンサー
    • PHP
  • テキストを値として渡したいんですが。

    HP上に表示しているテキストをクリックすると その値をPHP等に渡せるようにしたいんですが。 <FORM method="post" action="text.php"><INPUT size="20" type="text" name="text" value="テキスト"> <input type="submit" name="submit" value="検索"> </FORM> 上記のようなタグを挿入して、ボタンをクリックするとPHPを呼び出すのではなく あくまでテキストそのものをクリックすると そのテキストと同一の値が渡せるようにしたいんです。 PHPのカテゴリで質問するのかどうか悩んだんですが HTMLのカテゴリに質問してみました。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 配列として受け取った値を配列でない値に戻すには?

    お世話になります。 server_management.php(フォーム)から、server_management_remove_all.php(受け取り側ファイル)に配列としてデータを渡し、データを一括で更新するフォームを作成したのですが、server_management_remove_all.phpにおいて、header("Location: https://www.hogehoge/hogegege/server_management.php?id=".$id);というように戻り先のURLを指定し指定したURLに戻りたいのですが、変数$idに入れたい数字 (category_id)が配列として渡されてきているためかうまく変数$idに入れる事が出来ません。 【server_management.php】のソース ------------------------------------------------------------------ echo "<form action = \"server_management_remove_all.php\" method = \"post\">"; while($row = mysql_fetch_array($result)){ echo "<input type = \"hidden\" name = \"category_id[$row[item_id]]\" value =\""; echo $row["category_id"]; echo "\">"; 中略 } echo "<p>利幅1:<input type = \"text\" name = \"all\" value =\""; echo $row["all"]; echo "\" size = \"40\"></p>"; echo "<p>利幅2:<input type = \"text\" name = \"all2\" value =\""; echo $row["all2"]; echo "\" size = \"40\"></p>"; echo "<p>利幅3:<input type = \"text\" name = \"all3\" value =\""; echo $row["all3"]; echo "\" size = \"40\"></p>"; echo "<input type=\"submit\" value=\"一斉更新\">"; echo "</form>"; ?> ------------------------------------------------------------------ 【server_management_remove_all.php】のソース ------------------------------------------------------------------ $id=$_POST[category_id][$item_id]; header("Location:https://www.hogehoge/hogegege/server_management.php?id=".$id); if(isset($_POST['server_name'])){ foreach($_POST['server_name'] as $item_id=>$server_name) { $sql="update hametome_item set"; $sql.=" profit1='".$_REQUEST[all]."',"; $sql.=" profit2='".$_REQUEST[all2]."',"; $sql.=" profit3='".$_REQUEST[all3]."',"; 中略 $sql.=" category_id='".$_POST[category_id][$item_id]."'"; $sql.=" where item_id = ".$item_id; mysql_query($sql); } } ------------------------------------------------------------------ データを入力する際には、https://www.hogehoge/hogegege/server_management.php?id=15といったようなURL(戻りたいURL)から入力する形になっていて、同一のカテゴリーであれば、category_idは同じ数字です。 このような場合、どのようにすればよいのでしょうか?どうかご教授のほどよろしくお願いします。

    • ベストアンサー
    • PHP
  • 一括で値を入力するには?

    メインとするテキストフィールドに値を入れボタンを押すと指定の フィールドにメインで入力された値が一括で入力されるものを作りたく 調べてみたのですが一括でチェックボックスのON,OFFはみつかったの ですがどうやればできるのでしょうか? <form method="post" action="#"> <input type="text" name="fee[1]" value="" /> 円 <input type="text" name="fee[2]" value="" /> 円 <input type="text" name="fee[3]" value="" /> 円 ・・・ <input type="text" name="fee[48]" value="" /> 円 </form> 現在このようになっております。 用途は送料を一括で入力するものであり入力する値は基本的に半角 数字です。 例えばですがこれに <input type="text" name="feeall" value="" /> 円 <a href="#" onclick="feeset()">設定</a> とフィールドを追加し設定をクリックするとfeeallに入力した値が feeの配列に一括で入力できるようにしたいと思っておりますが方法が わかりません。 詳しい方おりましたら宜しくお願い致します。

  • 入力フォームの値をSQLのクエリに代入したい

    「1.htm」で入力された値を、次のページ「2.asp」で受け取って、 SQLに代入したいと考えています。 が、うまくいきません。 結果としては、クエリの結果がなく、 データが何も表示されない状態です。 どなたか宜しくお願いします。 ****1.htm**** <form method="POST" action="2.asp"> <input name="simei" type="text"> <input type="submit" value="検索"> </form> ****2.asp**** i = "Request.Form("simei")" Set rs = db.Execute("SELECT * FROM test WHERE ((test.氏名)='i')")

  • ReadParseで同名のinput名は配列で処理される?

    ReadPaeseでパラメータの受け渡しを行うのですが、CheckBoxの場合は、複数データが送れますが、textタイプやhiddenで同名のNameでフォームパラメータを送信した場合、受信側で配列として取得できるのでしょうか? それとも送る側で DATA1 DATA2 DATA3...のようにNameを付けて送信しないといけないのでしょうか? <INPUT text="KAMOKU" VALUE="国語"> <INPUT text="KAMOKU" VALUE="算数"> <INPUT text="KAMOKU" VALUE="理科"> <INPUT text="TEN" VALUE="60"> <INPUT text="TEN" VALUE="80"> <INPUT text="TEN" VALUE="70"> 国語60点と正しく順に取得できるかも心配 最悪これですか?3種ならこれでよいですが、増えると・・・ <INPUT text="KAMOKU1" VALUE="国語"> <INPUT text="KAMOKU2" VALUE="算数"> <INPUT text="KAMOKU3" VALUE="理科"> <INPUT text="TEN1" VALUE="60"> <INPUT text="TEN2" VALUE="80"> <INPUT text="TEN3" VALUE="70"> 以上です。

    • ベストアンサー
    • Perl
  • 値の引渡し

    変数の受け渡しがうまくいかない・・ 助言お願いします。 【入力フォーム1】 <form action="confirm.php" method="post" target="_brank"> <input type="submit" name="which" value="A"> <input type="submit" name="which" value="B"> </form> 上の入力フォームから送信されてきたデータを 表示しながら次の入力フォームでデータを確認画面へとばす その際に【入力フォーム1】で入力された which と 日付関数 $now = date(Y) . date(m) . date(d). ":" . $count をCSVデータにおとしていく 【入力フォーム2】 // 日付関数 $now = date(Y) . date(m) . date(d). ":" . $count; // csvデータへ落とす値↓ $buf = "$now,$which\r\n"; import_request_variables("gP","" ); session_cache_limiter('private'); session_start(); $_SESSION['pageData'] = $_POST['which']; <html> <head> </head> <body> <form method="post" action="check.php"> <input type="hidden" name="submitflg" value="$submitflg"> <input type="hidden" name="name1" value="$name1"> //======================================================================== // ココ↓で次ページへ$nowの値を引き渡すことができなくて困ってます。 <input type="hidden" name="now" value="$now"> //======================================================================== <input type="hidden" name="which" value="<?=$_POST['which']?>"> ありがとうございます! ■さっき入力された値は:<br> <? echo $_SESSION['pageData'];?><br> ■ペンネーム <input type="text" name="name1"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • 複数のsubmitボタンを使い値を送信する

    <form action="/サーブレットへ" method="post"> <input type ="TEXT" NAME="text1"> <input type ="TEXT" NAME="text2"><br> <textarea name="zzzz" cols="100" rows="10"> </textarea> <input type="hidden" name="a1" value="3"> <input type="submit" name="a1" value="作成"> <input type="hidden" name="a1" value="2"> <input type="submit" name="a1" value="修正"> </form> 複数のsubmitを使用してそれぞれ違う、値又は変数を渡し処理をしたいのですが、わかりません。 分かる方がいましたら教えてください。よろしくお願いします。

    • ベストアンサー
    • Java