kumoz の回答履歴

全323件中101~120件表示
  • 変換について

    お世話になっております。 下記要件を満たす記述をご教授頂けますでしょうか。 <概要> アンケートデータを結合してアウトプットします。 ・アンケートデータ 1~10までの項目を当てはまるものだけ回答してます。 例)Aさん:1/5/6/8  Bさん:3/4/7/8/9/10 ・アウトプット形式 1~10のカラムがあり、回答された所を1とし、回答されてないものを0とする。 例)Aさん:1/0/0/0/1/1/0/1/0/0(1,5,6,8を1とし、それ以外を0とする) Bさん:0/0/1/1/0/0/1/1/1/1(3,4,7,8,9,10を1とし、それ以外を0とする) よろしくお願い致します。

    • ベストアンサー
    • kotachata
    • Perl
    • 回答数4
  • 正規表現について(sed)

    いつもお世話になっております。 下記のようなURLから、特定のパラメータ以外はすべて除去したいのです。 http://XXX.jsp?rank=6&uid=aaaabfadfddfd&k=open&serial=12345&pr=ABC 残したいパラメータは k= a= pr= です。 s/[&?]\([k]\|[a]\|[pr]\\)=[0-9a-zA-Z%_-]\+//g この表現で、なんとか残したいパラメータを除去するのはできました。 「これ以外」という表現ができれば、望みの結果になると思うのですが、 いろいろ試してもうまくいきませんでした。 そもそも考え方が違うのかもしれないですが。。。 申し訳ありませんが、お詳しい方教えていただけると非常に助かります。 よろしくお願いいたします。 すみません、先ほどPHPでの処理でどうにかならないかと思い、 別の似たような質問を投稿してしまいました。 今回はLinuxのsedコマンドでの処理になるので、あえて別の投稿させていただいています。 申し訳ありません。。。 正規表現について(preg_replace) http://okwave.jp/qa/q7125468.html

  • @INCにrequireされたファイルが無い

    自作のCGIを実行したところ Can't locate BASE64 in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at g etHTTP line 71. のようなエラーが出ます。 BASE64がインストールされているかどうか確認するために、次のサイトのcheck.cgiを実行してみました。 http://perl.shtml.jp/check/check.html インストールされているということなので、検索を掛けてBase64.pmのパスを調べました。 C:\Perl\lib\MIME そこで以下のコードを追加して実行しなおしました。 unshift @INC, "C:/Perl/lib/MIME"; 残念ながらうまく動きませんでした。 Can't locate BASE64 in @INC (@INC contains: C:/Perl/lib/MIME C:/Perl/site/lib C: /Perl/lib .) at getHTTP line 71. どうすれば良いでしょう。 お手数をお掛けします。

    • ベストアンサー
    • makoji
    • Perl
    • 回答数2
  • Perl 書き込み行の順番、読み込み

    #!/usr/bin/perl require "cgi-lib.pl"; print "Content-type: text/html\n\n"; ############ 書き込み ############# $file = "sample.txt"; print qq! <font size="1">コード入力<form method=POST action="./houkoku.cgi"> <input type="text" name="rank"> <br><br> <input type="submit" value="送信"> </form>!; use CGI; $query = CGI->new; $rank = $query->param('rank'); open( WRITE, ">> $file" ); print WRITE"$rank\n"; close ( WRITE ); ############ 読み込み ############# print "<table border=1>"; open( READ, "<$file" ); $adam = <READ>; while( $adam = <READ> ) { chomp ( $adam ); @column = split(",",$adam); print "<tr><td>@column[0]</td></tr>"; } close(READ); __END__ のようにして、送信されたものを表示していくようにしたいのですが、 新しい書き込みが下段に追加されてい行きます。 新しいものを上段へ表示したいのですが、 どのようにしたら良いでしょうか? sample.txtにも、新しいものが下に記入されています。 上段への書き込みのやりかたをご教授いただけたらと思います。、 よろしくお願いします。

    • ベストアンサー
    • spider32
    • Perl
    • 回答数1
  • PERLのSHIFT_JISの振る舞いについて

    PERLでプログラムを作る時、SHIFT-JIS形式で長音符(ー)があると、エスケイプしてもエラーが出てしまい困っています。 また、ホームページそのものがSHIFT_JIS形式のため、UTF-8など他の形式を使うと煩雑になるため避けたいと思っています。 エスケイプさせるなど簡単な方法は無いものでしょうか? また、こちらはご存じでしたら教えていただきたいのですが、「¥」マークでエスケイプしてもうまくいかない文字には他にどの様なものがありますでしょうか? ---test.pl---SHIFT_JIS形式---- $| = 1; $test = "\テ\ス\タ\ー"; $test =~ s/\テ\ス\タ\ー/tester/; print $test; エラーを見ると、 Unmatched [ in regex; marked by <-- HERE in m/\テ\ス\タ\ー <-- HERE / at test.pl line 3. とでます。

  • CGIから出力される文字が化けて表示される

    メールフォームのCGIが出力するHTMLがブラウザで正常に表示されません。 HTMLで書いたメールフォームから、CGIを使って指定メールアドレスに文面を送信するページを作っています。 CGIとメールフォームは、ページを設置するレンタルサーバのサポートから入手した、公式のバージョンに手を加えて使っていますが、動作中に表示されるページの一部が文字化けする障害が発生してしまいます。 状況は下記の通りです。 1.フォームの送信ボタンを押すと、内容確認を促すページにジャンプ、もし入力漏れがあれば   警告ページにジャンプするのですが、どちらにジャンプしても表示が化けてしまいます。 2.文字コードを確認すると、CGIから出力されたHTMLが欧文(ISO)形式として認識されています。 3.CGIと、呼び出しに使っているHTMLはEUC形式で保存されているので、表示モードをEUCに   切り替えると、正しい内容で表示されます。   また、実際にメールを送信すると、受信メールも正常に送られています。 4.送信が正常に済むと、その旨を確認するページが表示されるのですが、そのページは正しく   表示されます。(文字化け表示のまま遷移しても、正しく表示されます) 5.文字化けしているページのソースを確認すると、一応charasetでコードがEUCに定義されている   ようなのですが、ブラウザ側では認識されていないようです。 画面の遷移を整理しますと、【フォーム】>【確認/警告】>【送信完了確認】となりますが、真ん中にある「確認/警告」の両ページのみが文字化けする、という感じです。 何か対応方法をご存知でしたら、ご教授頂けますでしょうか。 よろしくお願い致します。

  • CGIから出力される文字が化けて表示される

    メールフォームのCGIが出力するHTMLがブラウザで正常に表示されません。 HTMLで書いたメールフォームから、CGIを使って指定メールアドレスに文面を送信するページを作っています。 CGIとメールフォームは、ページを設置するレンタルサーバのサポートから入手した、公式のバージョンに手を加えて使っていますが、動作中に表示されるページの一部が文字化けする障害が発生してしまいます。 状況は下記の通りです。 1.フォームの送信ボタンを押すと、内容確認を促すページにジャンプ、もし入力漏れがあれば   警告ページにジャンプするのですが、どちらにジャンプしても表示が化けてしまいます。 2.文字コードを確認すると、CGIから出力されたHTMLが欧文(ISO)形式として認識されています。 3.CGIと、呼び出しに使っているHTMLはEUC形式で保存されているので、表示モードをEUCに   切り替えると、正しい内容で表示されます。   また、実際にメールを送信すると、受信メールも正常に送られています。 4.送信が正常に済むと、その旨を確認するページが表示されるのですが、そのページは正しく   表示されます。(文字化け表示のまま遷移しても、正しく表示されます) 5.文字化けしているページのソースを確認すると、一応charasetでコードがEUCに定義されている   ようなのですが、ブラウザ側では認識されていないようです。 画面の遷移を整理しますと、【フォーム】>【確認/警告】>【送信完了確認】となりますが、真ん中にある「確認/警告」の両ページのみが文字化けする、という感じです。 何か対応方法をご存知でしたら、ご教授頂けますでしょうか。 よろしくお願い致します。

  • CGI(Perl)の文字化けについて

    WEBフォームからの入力データをHTMLに加工して表示するというシンプルなCGIプログラムなのですが、 全角スペースの後に全角カタカナが入ると、全角スペースの部分から後が文字化けしてしまいます。 他はきちんと表示されているのですが、全角スペースとカタカナが続いているのが良くないみたいで、文字化けしてしまうようです。 全角スペースを取ってしまえばいいのかと思い、WEBで検索して色々と試してみましたが、変わりません。。 このような場合はどういう対処をするのが一番いいのでしょうか。 文字コードはEUCを使っています。(WEBフォーム、CGIとも) 教えてください。よろしくお願いいたします。

    • ベストアンサー
    • noname#223023
    • CGI
    • 回答数10
  • CGI(Perl)の文字化けについて

    WEBフォームからの入力データをHTMLに加工して表示するというシンプルなCGIプログラムなのですが、 全角スペースの後に全角カタカナが入ると、全角スペースの部分から後が文字化けしてしまいます。 他はきちんと表示されているのですが、全角スペースとカタカナが続いているのが良くないみたいで、文字化けしてしまうようです。 全角スペースを取ってしまえばいいのかと思い、WEBで検索して色々と試してみましたが、変わりません。。 このような場合はどういう対処をするのが一番いいのでしょうか。 文字コードはEUCを使っています。(WEBフォーム、CGIとも) 教えてください。よろしくお願いいたします。

    • ベストアンサー
    • noname#223023
    • CGI
    • 回答数10
  • CGI(Perl)の文字化けについて

    WEBフォームからの入力データをHTMLに加工して表示するというシンプルなCGIプログラムなのですが、 全角スペースの後に全角カタカナが入ると、全角スペースの部分から後が文字化けしてしまいます。 他はきちんと表示されているのですが、全角スペースとカタカナが続いているのが良くないみたいで、文字化けしてしまうようです。 全角スペースを取ってしまえばいいのかと思い、WEBで検索して色々と試してみましたが、変わりません。。 このような場合はどういう対処をするのが一番いいのでしょうか。 文字コードはEUCを使っています。(WEBフォーム、CGIとも) 教えてください。よろしくお願いいたします。

    • ベストアンサー
    • noname#223023
    • CGI
    • 回答数10
  • 正規表現の応用

    C言語のソースコードを扱っています。 デバッグのため(関数がどういう順番で呼び出されているかを知るため)、関数の先頭にprint文をつけようと思っています。 例えば、 int hoge(引数の並び) { 関数の中身 } なら int hoge(引数の並び) { printf("hoge"); 関数の中身 } といった具合です。 関数が膨大なので、手作業で一つずつprintfを書くのは現実的ではありません。 関数の最初の1行のパターンマッチは、/int\s\w*(.*)/ でうまくいくのですが、次の行の{まで含んだ正規表現に対応させるやり方がわかりません。 また、printf文を読み込んだソースコードに挿入するにはどうしたらよいのでしょうか。 どなたか分かる方がいらしたらご教授よろしくお願いいたします。

    • ベストアンサー
    • noname#182748
    • Perl
    • 回答数4
  • Perlでのテキスト処理について

    Perlでのテキスト処理について質問です。 テキストファイルの中身が下記のようになっています。 【テキスト編集前】 --------------------------------------- test ,abc ,AB ,VI ,SS ,ma ---1行目 test ,abc ,AC ,PI ,VS ,ma ---2行目 test ,abc ,BA ,SS ,VS ,ma ---3行目 test ,abc ,BA ,VI ,VS ,ma ---4行目 test ,cde ,AA ,VI ,SS ,mb ---5行目 test ,cde ,CC ,PE ,VS ,mb ---6行目 test ,cde ,BC ,PI ,SS ,mb ---7行目 test ,cde ,AC ,PI ,SS ,mc ---8行目 --------------------------------------- 2列目(abc/cde)と6列目(ma/mb/mc)が同じ行に対しては 1行にまとめて出力したいと思っています。 この時、1列目、4列目、5列目はマージした形にし (同一文字は一度だけ出力、同一でない文字は/区切りで出力)、 2列目、6列目は同一文字をそのまま出力し、 3列目に関しては、該当する行の先頭行の文字列を 出力したいと思っています。 下記が当方の希望しているPerl実行後の出力結果です。 【テキスト編集後】 --------------------------------------- test ,abc ,AB ,VI/PI/SS ,SS/VS ,ma test ,cde ,AA ,VI/PE/PI ,SS/VS ,mb test ,cde ,AC ,PI ,SS ,mc --------------------------------------- このような編集をPerlで実行したいと思っているのですが、 どのような記述をすれば実行できるのか教えて頂けないでしょうか。 当方、Perlを始めたばかりで基本的なことを 伺っているのかもしれませんが すみませんが、ご了承ください。 宜しくお願いいたします。

  • Perlでの文字列処理について

    プログラム初心者です。 Perlで下記のような文字列処理のプログラムの書き方がわからず、質問させて頂きました。 【内容】 FILE_A.txtが「!」マークで区切られていて、「!」マークの下行の文字列をIPアドレスの右横に移動したものをFILE_B.txtに出力するという処理です。 「!」マークの下行の文字列の「name」は共通です。 -------------------------------------------- 【FILE_A.txt】 ! name abcdeLV 123.123.123.123 123.123.123.124 123.123.123.125 ! name fghijLV 10.10.10.11 10.10.10.12 10.10.10.13 10.10.10.15 10.10.10.16 ! -------------------------------------------- ↓ -------------------------------------------- 【FILE_B.txt】 123.123.123.123 abcdeLV 123.123.123.124 abcdeLV 123.123.123.125 abcdeLV 10.10.10.11 fghijLV 10.10.10.12 fghijLV 10.10.10.13 10.10.10.15 fghijLV 10.10.10.16 fghijLV -------------------------------------------- 上記のようなPerlでの処理を具体的に教えて頂ければうれしいです。 本サイトのようなものを利用するのが初めてですので、不手際があるかもしれませんが なにとぞよろしくお願いいたします。

  • Perlでのテキスト変換方法に関して

    テキストファイルをperlを使用して下記のように 変換したいと思っています。 --------------------------- 【変換前】 aaa 8000 52 ---1行目 abc 200 48 ---2行目 cbd 250 31   ---3行目 efg 98 45   ---4行目 abc 390 68   ---5行目 ddd 89 90   ---6行目 aaa 65 40   ---7行目 fed 900 66   ---8行目 efgh 99 49 ---9行目 abc 40 40 ---10行目 【変換後】 aaa 8000 52   ---1行目 cbd 250 31   ---3行目 efg 98 45   ---4行目 abc 390 68   ---5行目 ddd 89 90   ---6行目 fed 900 66   ---8行目 efgh 99 49 ---9行目 ---------------------------- やりたいことはまず行の先頭文字列(aaaやabc)が完全に一致する行が 複数あれば(2,5,10行目のabcや1,7行目のaaa)、2番目の文字列(スカラー値)の値が 小さい方の行は出力しないようにしたいと思っています。 例えば上記の場合ですと、2,5,10行目の最初の文字列はaaaで完全に一致しており、 2番目の列の値は5行目が390に対し、2行目は200、10行目は40と小さくなっているため 2行目,10行目は出力されない、というのが望んでいる動作です。 sortを使用してどうにかならないかとも、考えたのですが そこから先がどうしていいか思いつきませんでした。 何かよい方法を思い浮かぶ方がいましたら、どのようにPerlで記述すればよいのか 教えて頂けないでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • emo_ken
    • Perl
    • 回答数2
  • perlによるデータのくっつけ方法の効率化

    2種類のファイルがあり、これを下記のルールによりくっつけたいと考えています。 データ数の多さから ファイル1のデータを1行ずつみていき、ファイル2に条件に等しいものがないか確認して書き出しをするというやり方では、 時間がかかってしまい、効率よい書き方を教えていただきたいのです。 ファイル1:100万行 カラム1<タブ>カラム2<タブ>カラム3<タブ>カラム4  各カラムは可変長の値(各カラム、行重複値あり) 例 AAA<タブ>BB<タブ>CC<タブ>DDDD   AAA<タブ>BBB<タブ>CC<タブ>DD   XX<タブ>BB<タブ>YYY<タブ>Z   ・・・ ファイル2:10万行 カラム5<タブ>カラム6<タブ>カラム7 各カラムは可変長の値(各カラム重複値あり、カラム5とカラム7のセットで一意データ) 例 BB<タブ>EEE<タブ>RRR   BB<タブ>EEE<タブ>SS   BB<タブ>FF<タブ>TTTT   W<タブ>EEE<タブ>TTTT   ・・・ 条件: カラム2=カラム5のとき、 結果: カラム1<タブ>カラム2<タブ>カラム3<タブ>カラム4<タブ>カラム6<タブ>カラム7 というものを出力させる 例 カラム2(BB)=カラム5(BB) AAA<タブ>BB<タブ>CC<タブ>DDDD<タブ>EEE<タブ>RRR AAA<タブ>BB<タブ>CC<タブ>DDDD<タブ>EEE<タブ>SS AAA<タブ>BB<タブ>CC<タブ>DDDD<タブ>FF<タブ>TTTT ・・・ ※カラム2(BB)=カラム5(BB)のとき、ファイル2のカラム5にBB存在する行分 ファイル1の内容がカラム6、7を追加し増えていくようにしたいのです。 よいプログラムを教えてください。

    • ベストアンサー
    • 1204533
    • Perl
    • 回答数2
  • perlでの比較について

    perlでの比較について Perlで以下のことをしたいと考えております。 ”文字列全一覧”の中に文字列が数千個ほど並んでいます。 文字列が数百個かいてあるテキストファイルが数百個ほどあります。 その文字列のテキストファイルに書かれている文字列全てが”文字列全一覧”の中にある文字列と 完全一致しているか、完全不一致している、部分一致しているか仕分けたいです。 【文字列全一覧】 ABC XYZ AAA ccc DADA ABCDEFG 【文字列ファイル1】 AAA bbbb xyz SSSSSS 【文字列ファイル2】 AAA ccc DADA 【文字列ファイル3】 ABCDGHJ XYZ AAA ABC 【文字列ファイル4】 ZZZZZZ llllll 5678901 KIKIKIKI 【文字列ファイル・・・】 ・・・・・ ・・・・・ このような感じでファイルがあります。(ちなみに上記の場合、”文字列ファイル2”が完全一致で”文字列ファイル4”が完全不一致、”文字列ファイル1”と”文字列ファイル3”が部分一致になります。) どなたか教えていただけないでしょうか(涙)

  • use lib qw(./lib);が使えない?

    システム名: Linux リリース: 2.6.9-89.ELsmp バージョン: #1 SMP Mon Apr 20 10:34:33 EDT 2009 Perl バージョン: 5.008005 Archive::Zipがインストールされていないサーバにlibディレクトリを作成して実行したいのですが、実行以前にエラーとなってしまいます。現在、libディレクトリはcgi-bin内にありますが、置き場所が悪いのでしょうか? 漠然とした内容で申し訳ございませんが、どのような理由が考えられるのかをお聞かせください。

  • 大量データから抽出する効率よいperlプログラムは

    以前も質問させていただきましたが、 大量データから抽出する際の効率よいperlプログラム作成について また、教えてください。 例) 大量データ Aファイル 3列 可変値(数値、URL、数値)タブ区切り 重複値あり 123 http://www.XX.co.jp/XX 4567 1111 http://www.XX.co.jp/XX 3333 3 http://www.XX.co.jp/YZ 4567 1111 http://www.YYY… 116 … 抽出対象データ Bファイル 1列(URL)重複なし http://www.XX.co.jp/X http://www.YYY.co.jp … BファイルにあるURLで始まるURLがAファイルにある場合 Aファイルのその行を抽出したい。 grepで実施すると すごい時間がかかってしまうため、効率よい抽出方法をおしえてください。 今回は、完全一致ではなく、Bファイルに入っているリストのURLから始まるものにしたいと考えているので、前の手法(hash連想配列)が使えないと考えております。 Aファイルが容量大きいため、grep処理では1週間たっても終わらないのです。

    • ベストアンサー
    • 1204533
    • Perl
    • 回答数9
  • flockの挙動がおかしい。。。

    おそれいります。 親プロセスから子プロセスを複数呼び 子プロセスが全て終わった後に次の手順に移行する。。。という処理をflockを使って作っているのですが、 うまくいきません。 下の「main.pl」を実行すると、「lock.pl」を10回呼び出して、 すべて終了したら「OK」と表示したいです。 lockというファイルを全部のプロセスで共有して、 子の全部の処理が終わった時点で、mailにロックが移る。。。という動きを想定したのですが、 なぜか、数回実行しているとMAIN LOCK(1) が最後に発動しているにもかかわらず、 子プロセスが終了していないのに「OK」の表示を出してしまいます。 flockは順番を守らないのでしょうか・・・・????? どのようにしたらうまく動くでしょうか。。。。 ==> main.pl <== #!/usr/bin/perl use Fcntl ':flock'; for (1..10){ system("./lock.pl $_ &"); } sleep 5; # 子プロセスが開始するまで待つ print qq("MAIN LOCK\n"); # ... (1) open LC,"+<lock" or die; flock LC,LOCK_EX; sleep 1; print qq("OK\n"); ==> lock.pl <== #!/usr/bin/perl use Fcntl ':flock'; print qq(lock $ARGV[0]\n!); # ... (2) open LC,"+<lock" or die; flock LC,LOCK_EX; sleep $ARGV[0]; print qq(release $ARGV[0]!\n);

    • ベストアンサー
    • azicyan
    • Perl
    • 回答数4
  • flockの挙動がおかしい。。。

    おそれいります。 親プロセスから子プロセスを複数呼び 子プロセスが全て終わった後に次の手順に移行する。。。という処理をflockを使って作っているのですが、 うまくいきません。 下の「main.pl」を実行すると、「lock.pl」を10回呼び出して、 すべて終了したら「OK」と表示したいです。 lockというファイルを全部のプロセスで共有して、 子の全部の処理が終わった時点で、mailにロックが移る。。。という動きを想定したのですが、 なぜか、数回実行しているとMAIN LOCK(1) が最後に発動しているにもかかわらず、 子プロセスが終了していないのに「OK」の表示を出してしまいます。 flockは順番を守らないのでしょうか・・・・????? どのようにしたらうまく動くでしょうか。。。。 ==> main.pl <== #!/usr/bin/perl use Fcntl ':flock'; for (1..10){ system("./lock.pl $_ &"); } sleep 5; # 子プロセスが開始するまで待つ print qq("MAIN LOCK\n"); # ... (1) open LC,"+<lock" or die; flock LC,LOCK_EX; sleep 1; print qq("OK\n"); ==> lock.pl <== #!/usr/bin/perl use Fcntl ':flock'; print qq(lock $ARGV[0]\n!); # ... (2) open LC,"+<lock" or die; flock LC,LOCK_EX; sleep $ARGV[0]; print qq(release $ARGV[0]!\n);

    • ベストアンサー
    • azicyan
    • Perl
    • 回答数4