![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Webプログラミング初心者です.
ファイルへの保存について質問です><
フォームから受け取ったデータを文字コード変更させてファイルに保存する場合
$name1=$cgi->param('name');
$name2=$cgi->param('number);
このように一度変数にいれ.
次に文字コードの変換をし変換した内容を再び$name1,$name2に格納した場合,
ファイルの書き出し•保存のソースコードは,
if (open(FH, "form.txt")) {
@file = <FH>;
close(FH);
unshift(@file, "$in{'name1'}\t$in{'name2'}\n"); //ココの部分です.
if (open(FH, ">form.txt")) {
print FH @file;
close(FH);
} else {
print "<p>ファイルに書き込めません。</p>";
}
} else {
print "<p>ファイルを読み込めません。</p>";
}
このような感じで良いのでしょうか?
unshift(@file, "$in{'name1'}\t$in{'name2'}\n"); の変数名の部分では例題はフォームから受け取ったものを
そのまま書いてある例が多くどのように記述したら良いかわかりません.
一度やってみてできなかったので他の部分にミスがあったのかと探し中ではありますが...
教えてください.お願いします><
No.1ベストアンサー
- 回答日時:
> unshift(@file, "$in{'name1'}\t$in{'name2'}\n"); //ココの部分です
だと、 $in{'name1'} , $in{'name2'} が展開されます。%inというハッシュで、キーが 'name1', 'name2'の値、という意味です。
入れたいは%inではなく、単純な変数なのですから、どう書けばいいかわかると思いますが。
また、この方法を使わなくても
・sprintfを使う: sprintf("%s\t%s\n", $name1,$name2)
・文字列結合の演算子 . を使う: $name1 . "\t" . $name2 . "\n"
等もあります。
ダブルクォートの中の変数展開がよくわからないなら、後者の方法を使えばいいです。
あと、これって
> @file = <FH>;
> close(FH);
> unshift(@file, "$in{'name1'}\t$in{'name2'}\n"); //ココの部分です.
.......「このあたり」.........
> if (open(FH, ">form.txt")) {
の「このあたり」で他の人がform.txtを書き換えてしまう可能性があります。
>+等の読み書きモードでオープン→flock→読み込み→(必要ならファイルを空に)→書き込み→クローズ
等とするなどして、間に入ってこれないようにする必要があります
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- iOS ファイルの名前変更 2 2022/08/11 20:47
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
window.open でのファイル指定方法
-
fgets で値が取得できない
-
MATLABのm-fileについて
-
WindowsでPerlをする際,1行目の...
-
ファイル全てを .xlsm に変更し...
-
ファイルの存在の有無を確かめ...
-
巨大なテキストの最終行を取得...
-
fortranのopen文について。
-
行を指定して削除する方法PERL
-
JSP URLに表示される拡張子 .jsp
-
PerlでHTTPを扱いたい
-
VBAでCSVファイルの特定行を書...
-
ReadLineでの読み出し行を指定する
-
awkスクリプトでダブルクォーテ...
-
VBAで巨大なファイルの途中から...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルを途中行まで...
-
htaccessで特定のディレクトリ...
-
fopenでディレクトリ内の全ファ...
-
ファイル出力の改行コードをLFに
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python renameについて
-
fgets で値が取得できない
-
window.open でのファイル指定方法
-
巨大なテキストの最終行を取得...
-
ファイル全てを .xlsm に変更し...
-
read() on unopened filehandle...
-
csvファイルの横方向への改行に...
-
VBAコードを張り付け後のエクセ...
-
Firefox で file:// で始まる U...
-
JSP URLに表示される拡張子 .jsp
-
drtファイルはどうしたら開...
-
並び方、
-
重複ファイル名ある場合ファイ...
-
VBA テキストファイルを読み取...
-
cgiでサーバーにファイルを追加...
-
HTMLのフォームで画像と文...
-
WindowsでPerlをする際,1行目の...
-
バイナリファイルの出力
-
Perlでのパーミッション変更の仕方
-
foreach内での変数の扱い?
おすすめ情報