![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
すいません。もしかしたら出ている質問かもしれませんが見つからなかったので質問させてください。
やりたい事は、既存の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ランキング
-
Perlでハードウェア制御?
-
クリックを何回もされて、重複...
-
perlでファイル内の文字列を置...
-
close()で例外が投げられる理由
-
ログの一部を消す Perl
-
Perl cgi 編集&削除
-
レコードの書込み判断
-
Net-Snmpのtraphandleよりshell...
-
PICでFatFsでオープンした内容...
-
Perl変数から外部プログラムの...
-
VBAでCSVファイルを途中行まで...
-
巨大なテキストの最終行を取得...
-
ファイル名を複数個配列で確保...
-
ファイル全てを .xlsm に変更し...
-
Perlで特定文字列から特定文字...
-
fgets で値が取得できない
-
VBAでCSVファイルの特定行を書...
-
エラー 'dir.h' : No such fi...
-
VBAでタブ区切りテキストの保存...
-
awkスクリプトでダブルクォーテ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
close()で例外が投げられる理由
-
perlのflock関数でロックをかけ...
-
perlを用いた特定文字列間の抽...
-
テキストファイルの本文中に行...
-
ジョブショップスケジューリング
-
while(<ハンドラ>) {} で行数を...
-
改行コードが勝手に
-
perlでファイル内の文字列を置...
-
perlで大容量CSVのsort方法につ...
-
cgiの投票回数制限設定について...
-
perlで複数のファイルの処理に...
-
オープンしたファイルで行の連結
-
Perl で syntax error
-
巨大ファイルの行をを逆順に並...
-
パスワード自動生成スクリプト...
-
AutoCADのスクリプト
-
PICでFatFsでオープンした内容...
-
Perlで他サイトの情報を取得し...
-
パイプをopenして/usr/bin/grep...
-
telnet接続
おすすめ情報