Perl

全6054件中281~300件表示
  • perlを使ったファイルの入出力について

    perl 初心者です。 perl を使ってデータ整理を試みていますが、方法がわからなくて困っています。 やりたい操作は、 1、ディレクトリ内にある特定の拡張子をもつすべてのデータファイルを読み込む 2、データソート 3、データファイル名を変更せずに、ソートしたデータを出力する 例 ディレクトリに以下のデータファイルがあるとします aaa.data bbb.data ccc.data : zzz.data これらのデータファイルをすべて読み込み、中身を整理した後に aaa.txt bbb.txt ccc.txt : zzz.txt となるように、それぞれのデータの名前を変更せずに出力したいと思っています。 スクリプトのサンプルなんかがあればありがたいです。

  • CGIに関して (Miniりすと)

    下記URLにて入手可能なCGIを設置しましたが、 画像アップロード機能でpng形式だけアップロードできません。 以下のエラーメッセージが表示されます。 「ERROR! - アップロードできないファイル形式です」 CGI本体の設定項目も見つけられません。 アップロードできる形式とはあるのですが・・・。 imgフォルダも属性値777に設定してあります。 その他は問題なく動きます。 当方なにぶんズブのド素人で恐縮ですが問題を解りやすく ご指摘いただける方はいらっしゃいませんでしょうか? 何卒宜しくお願い申し上げます。 CGI配布場所 http://www.minicgi.net/cgi2/list.html

  • perlでdb(mysql)に接続

    perlでdb(mysql)に接続し、取得したデータを 表示させるというようなことをしたいのですが、うまく いきません。 ファイル名test.cgi mysqlのバージョンは 5.0.45で 記述は以下です。 #!/usr/bin/perl use DBI; my $dbh = DBI->connect("DBI:mysql:database, "userid", "password"); my $sth = $dbh->prepare('SELECT * FROM tablename'); $sth->execute; print "Content-Type: text/plain\n\n"; print "\n"; while(my @row = $sth->fetchrow_array) { print "$row[0]:$row[1]\n"; } $sth->finish(); $dbh->disconnect(); exit; ブラウザで確認すると何も表示されず、ログとして 以下のエラーが確認できます。 DBD::mysql::st execute failed: Table 'database.tablename' doesn't exist at test.cgi line 8. DBD::mysql::st fetchrow_array failed: fetch() without execute() at test.cgi line 11. my $sth = $dbh->prepare('SELECT * FROM tablename'); で指定したテーブルは存在しておりますし、SQL文の記述も 問題ないと思われます。 また、ファイルのパーミッションは705(755でも同様の結果)です。 perl初心者のため、どこが問題なのか検討がつきません。 ご助言いただきたく存じます。 よろしくお願いいたします!

    • ベストアンサー
    • Reptilez
    • Perl
    • 回答数2
  • 特殊文字入りの文字結合を、変数にできますか?

    ●perl $seireki = "2013";     # 変数 #------------- $123 = "$seireki";     # 代入 $nengou = "$abc"."$123"; # 結合 #------------- $abc2013 = <<"EOF"; あいうえお EOF $abc2014 = <<"EOF"; かきくけこ EOF #------------- ●html <strong>$nengou</strong> ーーーーーーーーーーーーーーーーーーー 上記、htmlの$nengouに あいうえお と表示したいのですが、 2013 と表示されてしまいます。 解決法として、 $は特殊文字なので、エスケープシーケンス(¥$)をして、 $nengou = "¥$abc"."123"; にしたら、 htmlの中の$nengouは、$abc2013 と表示されてしまいます。 どのようにしたら、 特殊文字入りの文字結合を、変数として扱うようにするのでしょうか? いろいろ試してみてもどうしても出来ません。 どなたか解決していただけますと、ありがたいです。

    • ベストアンサー
    • Perl
    • 回答数2
  • PerlのImage::Magickのフォントにつ

    Image::Magickで画像に文字を書こうと思っています。 レンタルサーバーを使うので一定の制限の下でCGIを作成するとします。 ・フォントはウィンドウズのフォントでも可能なのでしょうか? ・フォントはサーバーに単にアップロード任意のディレクトリのパスを指定しても使えるものなのでしょうか? よろしくお願いいたします。

  • SQL構文でカラム名をハッシュのキーに

    PerlをDBIでMySQLに接続しています。 MySQLの“country”テーブルに“name_en”カラムがあり、これをハッシュのキーにして、 下記構文で“name_jp”カラムに文字列を挿入しようとしたのですが、 ----------------------------------------- $sth = $dbh -> prepare ("update country set name_jp = \'$name{name_en}\' where id between 1379 and 1396"); ----------------------------------------- 結果は何も入りませんでした。 カラム名をハッシュのキーにするには、どう書けばいいのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • gellan
    • Perl
    • 回答数9
  • Perlで配列に設定した値が関数に引き継がれない。

    レンタルサーバ上でPerlのプログラムを作成しているの ですが、動作でよくわからないことがあるので、教えてください。 Perlのプログラムがあるサーバで動作していて、それを 他のサーバに移したのですが、正しく動作しなくなりました。 調べてみると、関数を呼んでいるところで配列の値がうまく 引き継がれていませんでした。 呼び出しの処理は次の通りです。 ●呼び出し元 ret= &SubModule(*DATA1); ●呼び出し先 sub SubModule { local(*DATA1) = @_ if @_; while(($key, $value) = each(%DATA1)) { #配列に対する処理 } #以下省略 このような処理の時に呼び出し元では配列DATA1に 値が入っているのに呼び出し先のSubModuleでは 空になりwhile文を素通りして「#配列に対する処理」 を実行しません。 いろいろ試しているうちに、呼び出し先に1つ余計な whileを入れると配列DATA1に値が入ってきました。 つまり次のように変更すると、うまくいきました。 呼び出し先 sub SubModule { local(*DATA1) = @_ if @_; while(($key, $value) = each(%DATA1)) { } while(($key, $value) = each(%DATA1)) { #配列に対する処理 } #以下省略 こうすると 「#配列に対する処理」が実行されました。 教えていただきたいのは以下の2点です。 (1)元のサーバでは問題なく動作していたのですが、  別のサーバでは、配列の引数がうまく引き継がれ  なくなりました。どういう原因が考えられるでしょうか。  処理上何かまずいところがあるのでしょうか。 (2)呼び出し先でwhile文を一つ入れることで、配列の  値が参照できるようになったのですが、これは  なぜでしょうか。 よろしくお願いします。

    • ベストアンサー
    • tomtomoo
    • Perl
    • 回答数2
  • CGIが動かない

    CGIに関してです。 下記にて入手可能なフリーのCGIが動かなくて困ってます。 詳しい友人曰くソースが古すぎるのではないか? ということでした。 当方所有のサーバーはロリポップレンタルサーバーで もちろんCGI設置可能です。 過去にも何点かフリーのCGIを動かしたことはあります。 本当にCGI本体の問題なのか検証できる方はいらっしゃいませんでしょうか? CGI本体: http://www.minicgi.net/cgi2/list.html 紹介サイト(サンプル2) http://www.minicgi.net/cgi2/

  • perlを使った文字列のエンコードについて

    http://www.tagindex.com/tool/url.htmlにあるようなURLエンコードの処理を行いたいのですが、ソースはどのようになりますでしょうか? 下記のようなものできるのかと思いましたが、「テスト」の文字列ですと、「%83e%83X%83g」と表示されてほしいのが、「?e?X?g」となってしまいます。 お分かりの方がおられるようでしたら、ぜひ教えてください。 $str='テスト'; use Encode 'encode'; $str = encode('sjis', $str); print "$str";

    • ベストアンサー
    • egypt
    • Perl
    • 回答数1
  • symlinkがうまくいってない?

    サーバーをcentos5からcentos6に変更しました それまでは動いていたCGIの一部が使えなくなりました symlinkを使用するCGIを使用した時に 途中で終わるようなのです どうもsymlinkにかかわるところでエラーがでるみたいです 簡単なCGIを作って実行しましたところ test.cgi ============================ #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<meta http-equiv=\"Content-Type\" content=\"text/html;\">\n"; print "<title>test</title>\n"; print "</head>\n"; print "<body>\n"; print "テスト開始</br>\n"; $lockfile= "./test.lock"; $retry = 5; while (!symlink(".", $lockfile)) { if (--$retry <= 0) { &error("BUSY"); } sleep(1); print "リトライ$retry回目</br>\n"; } unlink($lockfile); print "テスト終了</br>\n"; print "</body>\n"; print "</html>\n"; exit; ============================ 結果 <html> <head> <meta http-equiv="Content-Type" content="text/html;"> <title>test</title> </head> <body> テスト開始</br> リトライ4回目</br> リトライ3回目</br> リトライ2回目</br> リトライ1回目</br> と途中で止まっています 希望の結果は テスト開始 テスト終了 の文字がHTMLに表示されたいのですが どこを確認すればよいのかわかりません Perl文法チェッカーにて Perlのパスや実行権ありやsyntax OKは確認していますが このエラーへの対処がわかりません httpdのエラーログでは [日付] [error] [client xxx.xxx.xxx.xxx] Undefined subroutine &main::error called at /home/web/public_html/cgi/test.cgi line 13. と出ていますのでperlがおかしいとは思うのですが。。。 確認すべき場所がわかりません 確認すべきことを教えてください お願いします バージョン Server version: Apache/2.2.15 (Unix) Server built: Aug 13 2013 17:27:11 perlのバージョン This is perl, v5.10.1 (*) built for i386-linux-thread-multi

  • [Perl]Shift-JISのXMLを解析する場

    行き詰まってしまったので教えて下さい。 <やりたいこと> とあるAPIからXMLファイルを取得し、解析して出力する、ということをやっているのですが、元のXMLがShift-JISでエンコーディングされており、これをUTF-8に変換して出力しようとしています。 <問題> XMLを取得して解析、取り出したいパラメータが出力できるようにはなったのですが、文字のエンコーディングが上手く行っていないためか、文字化けしてしまいます。 <元のXML> <?xml version="1.0" encoding="Shift_JIS"?>  <test>   <prod count=3>    <record>     <code>アイウエ</code>    </record>    <record>     <code>カキクケ-</code>    </record>    <record>     <code>ABC</code>    </record>   </prod>  </test> <XML解析用のコード> #!usr/bin/perl use utf8; use Encode qw/ from_to encode decode /; use Encode::Guess qw/ euc-jp shiftjis 7bit-jis /; use LWP::UserAgent; use XML::Simple; use Data::Dumper; #--XML取得部分省略 #--XMLはgetで$xmlに格納 $from = guess_encoding($xml)->name; &from_to($xml,$from,"utf8"); $XML::Simple::PREFFERRED_PARSER = 'XML::SAX::PurePerl'; $xs = new XML::Simple(); $ref = $xs->XMLin($xml); $xml =~ s/<\?.*\?>//; for($i=0;$i<=$#{$ref->{'test'}->{'prod'}->{'record'}};$i++){  $name = $ref->{'test'}->{'prod'}->{'record'}[$i]->{'code'}; $name = encode('utf-8',$name); print "$i : $name\n"; } <結果> 黒ダイヤに?文字で文字化けして出力される。 どなたか原因がお分かりになりますでしょうか。 よろしくお願いいたします。

  • Perlのrename関数でエラーがでるのは?

    Perlのrename関数で、エラーがリターン値として返ってくるのは、どんな時でしょうか Perlのソースコードをざっと見たのですが、追跡しきれません。 どんな時にエラーになるのか教えてください。

  • 1キロバイト文字の削除について

    例えばsijisの「、」を削除しようと思い $body =~ s/\xa4//g; とすると\xa4を含む「う」などにも作用し、\xa4を削除してしまいます。 そこで2キロバイトの文字には作用しないようにするにはどうしたらいいか考え 「う」などがあった際には\xa4を削除しないようにしたのですが その場合、例えば「う」と「、」の両方があった時に「、」を削除しなくなってしまいます。 1キロバイトの文字を削除しても2キロバイトの文字には影響しない 何かいいアイデアはないでしょうか?

  • シフトJISにおけるマッチング

    シフトJIS使用時の日本語のマッチングにおいて 正確なマッチングができないことは分かっているのですが いわゆるダメ文字が含まれていないにもかかわらず マッチングがおかしいことがあります。 ちょう、きゅうなど最後「~う」で終わる言葉のマッチングさせると マッチングするはずがしないのです。 この理由は何が考えられますか? UTF-8に変換してマッチングさせればいいのは分かっているのですが どうしてなのかという理由が知りたいので投稿させていただきました。

    • ベストアンサー
    • masa-25
    • Perl
    • 回答数1
  • flockについて

    ファイルを読み書きする場合に使用するflockですが、closeする前に別ファイルのflockは使用できるのでしょうか? テストしてみたところ、うまくいってるような気もするのですが、確証が持てないので質問させていただきました。 例) $file1="file1.txt"; $file2="file2.txt"; open(OUT,"+<$file") flock(OUT,2); $count1=<OUT>; open(DAT,"<$file2") flock(DAT,1); $count2=<DAT>; close DAT; $count=$count1+$count2; truncate(OUT,0); seek(OUT,0,0); print OUT "$count "; close OUT; ちょっとあえて複雑な書き方としてみましたが、上記のようにflockを使ってる最中に別ファイルのflockを使用することは出来ますでしょうか? 参考URLでも結構ですので、どなたかよろしくお願いいたします。

    • ベストアンサー
    • hana43
    • Perl
    • 回答数2
  • LWPでヘッダー情報をあらかじめ取得したい

    例えば、下記のようなスクリプトの場合、一度画像が保存された後、ファイルサイズをを抜き出すようになります。 ダウンロード前に、ファイルサイズをあらかじめ知りたいのですがどのようにしたら良いでしょうか? use strict; my $url = "http://img.www.goo.ne.jp/img/gh_logo.png"; use LWP::UserAgent; use HTTP::Cookies; use HTTP::Request; use HTTP::Headers; my $req = HTTP::Request->new(GET => $url); my $ua = LWP::UserAgent->new; $ua->agent( 'Mozilla/5.0 (Windows NT 6.0; rv:12.0)' ); $ua->timeout('10'); $ua->max_redirect(); $ua->cookie_jar( HTTP::Cookies->new( file => '', autosave => 1, )); my $res = $ua->request($req, "save.png"); my $file_size = $res->header("content-length"); print $file_size;

  • perlで改行以降を削除

    $messageの中に○○○○<br>△△△△<br>□□□□の文字列が入っています。 最初の<br>以降を削除して○○○○だけを取り出すにはどうしたらよいですか? $message2 = "$messageの改行以降を消す" の方法を教えてください!

  • 文書検索で、このアルゴリズムあたまいい?

    (モジュールは別として)pure perl で文書検索のアルゴリズムを考えています。 このアルゴリズムが頭良いか、悪いかのツッコミをお願いします。 1.前提  mecabを使用 2.文書を書き込むとき  mecabで全文書を解析して、単語ごとにデータベースに入力する。  キー:単語 中身:そのページ名がたくさんはいったもの 3.文書を削除するとき  mecabで全文書を解析して、単語ごとにデータベースに入力されたものを削除する 4.文書が変更になったとき  3→2を行なう 5.検索するとき  検索キーワードをmecabで解析する  分割されたワードごとに、結果を表示する。 たとえば・・・ 1.txt が 愛 植尾 かきくけこ 会社 であれば 愛 植尾 カキクケコ 会社 に、1.txtが登録される 2.txt が 哀 植 尾 かきくけこ 会社 であれば 哀 植 尾 カキクケコ 会社 に、2.txtが登録される キーワードで、愛なら 1.txt キーワードで、植尾なら 1.txt キーワードで、植 尾(AND)なら 2.txt キーワードで、かきくけこ なら 1.txt、2.txt という感じで検索できる感じです。 ※検索のインデックスは、文書の単語量に依存しますが、無制限と考えます。 ※実装は、YukiWikiDBというファイルベースのデータベースから利用可能なものとします。 ※あまり深く考えないでこのサブルーチンを組むことも考えています。

  • リダイレクトのhtaccessを置くと403エラー

    perlで書いたCGIファイルがあるのですが、スマホ用のリダイレクトhtaccessファイルをトップディレクトリに置いた所、CGIのページが403エラーになってしまいました。 .htaccessファイルを外すと正常に表示するので、原因は.htaccessなのですが、理由が思い当たりません。 CGIのソースは出せないですが、お問い合せフォーム用のCGIです。 何かお気づきの点がありましたら助言お願い致します。 ● .htaccess(トップディレクトリに設置) <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !/sp/ RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) RewriteRule ^(.*)$ sp/$1 [R] RewriteBase / RewriteCond %{REQUEST_URI} /sp/ RewriteCond %{HTTP_USER_AGENT} !(iPhone|Android.*Mobile|Windows.*Phone) RewriteRule ^sp/(.*)$ $1 [R] RewriteBase / </IfModule> ● ディレクトリ構造 /index.html・・・トップページ /.htaccess・・・上記内容 /contact/all/index.cgi・・・403エラーになるCGI /contact/all/.htaccess・・・「Options ExecCGI」のみ記述 /sp/・・・スマホ用のリダイレクト先ディレクトリ(以下略)

    • 締切済み
    • umioyo
    • Perl
    • 回答数1
  • perl tr での変数の使い方

    tr を使って文字列を置換する時に 検索文字列や置換後の文字列のリストとして変数を使いたいのですがうまくできません。 tr はコンパイル時に変数を展開するので eval を使わないといけないという記述を見つけたのですが そこから先のやり方がわかりません。 eval "tr/$ab/$cd/"; のように書くというような記述までは見つかるのですけれど これを使ってどうすれば変換ができるのかわからないのです。 どなたか教えてください。 (初心者でごめんなさい。eval とか全然使い方がわかりません…)