
すいません。もしかしたら出ている質問かもしれませんが見つからなかったので質問させてください。
やりたい事は、既存のCGIで出来たデータを新しいCGIに合う様に変換させたいです。
えっと、今使用しているCGIがあるのですが、別のCGIに変更したいと思っています。
で、今までのデータをそのまま使用したいのですが、やっぱり、データが入っている順番が違ったりします。
例えば
元)名前,mail,URL,コメント,Pass…
新)名前,pass,コメント,mail,url…
こういうのを、新しい並びに一括変更するようなソフトって無いのでしょうか?新しいCGIのデータ書き込みを元のと同じように並べ替える手もあるとは思いますが、何か、新しい方は高性能そうなかんじのなので出きればデータのみを変更したいのです。
または、普段、こうしてるよ。とかご意見を聞かせていただけると嬉しいです。
宜しくお願いします。
No.3ベストアンサー
- 回答日時:
#2です。
さきほどの訂正です。ーーーーーーーーーーーーーーーーーーーーーーーー
open (LOG, "$old")||&error("can't open $logfile");
↓
open (LOG, "$old")||&error("can't open $old");
#ここは、古いログファイルの並び。
#$nameには、「,」でくぎられた最初の文字列、
#$passには、「,」でくぎられた次の文字列
#がはいっていく。↓
↓
#ここは、古いログファイルの並び。
#$nameには、「,」でくぎられた最初の文字列、
#$mailには、「,」でくぎられた次の文字列
#がはいっていく。↓
ご返答有難うございます。こちらのスクリプト使用させていただき、上手くいきました!!それに、何度も使えるので他のデータにも使えるし重宝しそうです。どうも有難うございました!!
No.4
- 回答日時:
簡単な変換プログラムを書いてしまった方が早いでしょう。
ex.test.pl
use strict;
open FILE, $ARGV[0];
open NEW, ">$ARGV[0].txt";
print NEW "$_\n" for map {
($_->[0],$_->[2]) = ($_->[2],$_->[0]);
join "\t", @$_[0..$#$_];
} map { chomp; [split/\t/] } <FILE>;
close NEW;
close FILE;
あとは、コマンドプロンプトから、
perl test.pl cgi_log.txt
で実行してやればOKです。
上のはとりあえずtab区切りで、
($_->[0],$_->[2]) = ($_->[2],$_->[0]);
の行でデータを入れ替えています。
1個目と3個目を入れ替えている例(添え字なので、一つずれることに注意)
ご返答有難うございます。ただ、悲しいかな、プログラムを自分で組んだ事が無く、作成できませんでした。凄くよさそうなものだけに、使いこなせず申し訳ないです。いつか、プログラムの知識を持てるようになりましたらチャレンジさせて頂きます。有難うございました。
No.2
- 回答日時:
ご自分でそいうCGIをつくるのも手かとおもいます。
おそらく掲示板かなんかのログファイルですよね?
perlの知識がいりますが参考にしてみてください。
たとえば、monica_pandaさんがおっしゃているように、
元)名前,mail,URL,コメント,Pass
新)名前,pass,コメント,mail,url
という風に変換したい場合、それぞれの情報が、という風に「,」でくぎっあるならば、
************** change.cgi ******************
#!/usr/local/bin/perl
#↓古いログファイル名を指定
$old= "bbs.log";
#↓新しいログファイル名を指定
$new = "newbbs.cgi";
print "Content-type: text/html\n\n";
open (LOG, "$old")||&error("can't open $logfile");
@lines = <LOG>;
close(LOG);
open (LOG, ">$new")||&error("can't write $new");
foreach (@lines) {
$_ =~ s/\n//g;
#ここは、古いログファイルの並び。
#$nameには、「,」でくぎられた最初の文字列、
#$passには、「,」でくぎられた次の文字列
#がはいっていく。↓
local($name,$mail,$url,$com,$pass) = split(/\,/,$_);
#↓ここは、新しいログファイルの並び
$_ = "$name,$pass,$com,$mail,$url\n";
}
}
print LOG @lines;
close (LOG);
print "Exit";
exit;
sub error {
print "$_[0]";
exit;
}
**************************************
というファイルを作成してアップロードし、ログファイルと同じディレクトリにいれて、実行してみるのはどうでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) 複数ファイル名の一括変更について 3 2023/04/27 13:08
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- Excel(エクセル) 更新前と更新後の差分をVBAを使って抜き出したい 5 2023/06/01 14:35
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- ドライブ・ストレージ 古い外付けHDDから新品外付けHDDへのデータ移行方法 (Mac) 2 2022/12/11 02:01
- 格安スマホ・SIMフリースマホ sim移行 4 2022/11/29 14:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マッチ演算子に変数をはさんで...
-
cgiの投票回数制限設定について...
-
GD.pmで作成した画像を保存する...
-
プログラムのヒントを下さい
-
close()で例外が投げられる理由
-
HTMLから自動的に文章取得
-
.pasファイルなどの生成について
-
データの並べ替え
-
ファイルのマージについて
-
PHPコードをはじめ、記号や記述...
-
Shift-jisで正規表現
-
リストボックスから選択、結果...
-
画像ファイルの作成方法
-
ファイルの入出力2
-
Perlで文字列の操作がしたい
-
foreachによるカウント方法
-
特殊文字の数を調べる
-
excel 2003から VBAのreplaceマ...
-
Cシェルでのファイル編集について
-
2行の文章を1行にまとめる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
close()で例外が投げられる理由
-
perlのflock関数でロックをかけ...
-
改行コードが勝手に
-
where can I buy snowbord in t...
-
ファイルのロックについて
-
perlで複数のファイルの処理に...
-
perlを用いた特定文字列間の抽...
-
変数を使ってファイル名を自分...
-
open中のファイルをrename
-
文字列比較がどうしてもできま...
-
データの入れ替え処理が巧くで...
-
perlで大容量CSVのsort方法につ...
-
テキストファイルの本文中に行...
-
初歩的な質問で恐縮です。
-
パイプをopenして/usr/bin/grep...
-
perlでのスキンの利用方法
-
ログに記録又は読み出す際、最...
-
Perlのファイルオープン時...
-
Perlでハードウェア制御?
-
perlでファイル内の文字列を置...
おすすめ情報