回答数
気になる
-
MySQLにバイナリデータを正常に保存できない
ローカルに保存してあるファイルをMySQLにバイナリデータとして格納して保存したいと思ってます。 データは格納できるのですが、文字エンコード?の問題でファイルが壊れてしまっているみたいです。 格納後、出力した際にjpgなどの画像は問題なく表示されるのですが、xlsやpdfなどのファイルが開けなくなります。MySQLの文字コードはUTF8です。 #!/usr/bin/perl use DBI; my $dbh = DBI->connect('DBI:mysql:database:localhost:3306', 'user', 'password'); # ファイルパス my $file = '/tmp/test.xls'; # ファイルサイズ my $size = -s $file; # バイナリデータ読み込み my $line; open(IN, $file); binmode(IN); sysread(IN, $line, $size); close(IN); # DBに格納 my $sth = $dbh->prepare(qq|INSERT INTO file_table ( `file_name`, `file_data` ) VALUES (?, ?)|); $sth->execute('test.xls', $line); $dbh->disconnect; 上記のようなコードなのですが、おかしな点があれば教えてください。 よろしくおねがいします。
質問日時: 2011/05/20 20:16 質問者: rihm
ベストアンサー
2
0
-
perlを編集してサーバーへアップするとエラー
何をしてもサーバーエラーがでます。 たとえば$a=1; の数字を変えてまた元に戻してサーバーにアップすると エラーが出ます。 プログラムの部分をいじるとエラーが出ます。 パラメーター設定の部分の数値を変更するだけではエラーがでません。 何が原因なのでしょうか。 サーバーの設定上エラー番号はわかりません。 編集ソフトを変えても同じでした。 コードはシフトJISでFTP転送はバイナリとアスキー両方試しましたが エラーはでます。 文法的には間違いありません。 プログラムの部分に手を加えるだけでエラーが表示されます。
質問日時: 2011/05/19 22:57 質問者: abesouri
ベストアンサー
2
0
-
Not Found 404エラー時のCGI出力
こんにちは。 かなりハマってしまいました。 多分これ以上は、自身の力で解決できそうにないと思い質問させて頂きます。 現在、Perlを使ったシステムを作っています。 そこでページが見つからなかった場合に、どのページが見つからなかったのか、そのURLに合わせて 「ページが見つかりません。○○を確認してください」のような動的なページを作成したいと思っています。 ■現状 htaccessで、 ErrorDocument 404 /maintainace/cgi/make_page_err.cgi の記述をしています。 ■期待する結果 呼び出し先のCGI側で$ENV{'REQUEST_URI'}から エラーとなったURLを取得し、それに合わせて「Print xxxx」をする (さらに最終的にはHTMLを作成し、それを表示したい) ■現在の結果 無反応。 ただし、処理が走っているかを確認するために、呼び出し先のCGIに open File, ">>./404_log.txt"; を入れると正しくテキストファイルが書き込まれる → 通っていることまでわかる。 試しにCGIの先頭に print "Content-type: text/html\n\n"; print "aaa"; exit; とすると「Oops! This link appears to be broken.」(Firefox)のエラー画面が表示。 上記のテキスト書き込みなし。 更に ErrorDocument 404 /maintainace/cgi/make_page_err.cgi を絶対パスにしたところ 動作はするが、$ENV{'REQUEST_URI'}の値が「make_page_err.cgi」とCGI自身なり、 元のURLが拾えない。 このような状態です。 ネットでもいろいろ検索しましたが、求めている回答は見つかりませんでした。 直接の回答でなくても、参考になるURLなどでも構いませんので ご存じある方お願いいたします。
質問日時: 2011/05/19 18:45 質問者: Azzz___
ベストアンサー
1
0
-
perlのcdについて
こんばんは。 最近perl言語を授業で習い始めたので、家でも出来るようにとcygwinをダウンロードして使い始めたのですが、terapadに入力したプログラムを呼び出すことができません。 学校でやったときは、ホームディレクトリにcheminfというファイルを作り、その中にterapadで入力したファイルを入れていました。 おそらくファイルを置く場所に関係があると思うのですが、調べはしたもののさっぱり分からず…^^; また、terapadのプログラムには#!/usr/bin/perlって打ち込んでいるのですが、いったいこれがなんなのかも気になります。 相当初歩的な質問だとは思いますが、どうぞよろしくお願いします。
質問日時: 2011/05/18 23:24 質問者: tetorisu1127
ベストアンサー
3
0
-
Perlでのforeach文の挙動がわかりません
Perlに詳しい方教えてください。 WinXP(SP3)+ActivePerl-5.10.0.1004の環境で、重複データのチェックプログラムを 作成していますが、foreach文の挙動がよく分かりませんので教えてください。 ※Perlは独学です。 <入力ファイル> あいうえお あいうえお かきくけこ あいうえお <出力期待値その1> あいうえお,重複しています あいうえお,重複しています かきくけこ あいうえお,重複しています <出力期待値その2> あいうえお,重複しています あいうえお,重複しています かきくけこ あいうえお <プログラムの要約> open(IN,$input_file); # 入力ファイルを読み込み @BASE = <IN>; close(IN); @BASE_2 = @BASE ; # 配列のコピーを作成 $count_1 = '0' ; foreach $data_1 (@BASE) { $count_1++ ; # 何行目を処理しているかのカウンター $flag_1 = '0' ; # フラグの初期化 $count_2 = '0' ; foreach $data_2 (@BASE) { # ←★ここの記述方法の質問です★ $count_2++ ; if ( $count_1 == $count_2 ) { next; } # 自分自身の行とは比較しない if ( $data_1 eq $data_2 ) { $flag_1 = '1' ; } # 一致したらフラグを立てる } if ( $flag_1 == '0' ) { # フラグが立たなかったらそのまま新しい配列へ追加 push(@kekka,$data_1); } else { # フラグが立ったらコメントを追加して新しい配列へ $data_1 =~ s/\n//g; $data_3 = $data_1 . ",重複しています\n" ; push(@kekka,$data_3); } } $kekka_2 = join("",@kekka) ; # 配列のデリミタ対策 open(OUT,"> $output_file"); print OUT "$kekka_2"; close(OUT); exit; <質問> 上記プログラムの★マークの箇所で、 foreach $data_2 (@BASE_2) としますと、<出力期待値その1>が得られます そして、 foreach $data_2 (@BASE) としますと、<出力期待値その2>が得られます プログラムの途中で @BASE_2 = @BASE としていますので、一見しますと 同じ処理をしているように感じるのですけれども、実際には出力結果が異なり ますので、何かが違うのだと思います。 その違いを教えて戴きたいです。 ※投稿確認画面でTABが消えてしまいますのでTABは全角スペースに変更して おります。 見えづらい場合には申し訳ありません
質問日時: 2011/05/13 18:16 質問者: kaduno
ベストアンサー
1
0
-
JSON形式のデータ解析が出来なくて悩んでます。
「Twitterから学ぶ,Web APIのキホン」(http://gihyo.jp/dev/serial/01/perl-hackers-hub/000403)のサンプルプログラムを参考にitunesの検索apiの検索結果を解析しようとしているのですが解析できなく、何も表示されない状態になります。 itunes 検索api http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html まずは上のSearch Examplesにいくつか示しているitunes apiの検索結果(jsonデータ)から"artistId"に対する項目や"artistName"に対する項目を抜き出そうと試みています。 以下は実際に私が実行しているプログラムです。 ----------------------------------------------------------------- print <<"HTML"; Content-type: text/html <html> HTML use LWP::UserAgent; use URI; use JSON qw(decode_json); use Encode qw(encode_utf8); my $uri = URI->new('※ここにitunes apiの検索結果のurl入れています'); my $ua = LWP::UserAgent->new; my $res = $ua->get($uri); my $json = $res->content; my $ref = decode_json($json); for my $applist ( @{ $ref->{results} } ) { print encode_utf8("$applist->{artistId}: $applist->{artistName}\n");} -------------------------------------------------------------------------------------- としているのですが結果は何も表示されません。※cgiはmac 環境にてUTF-8 Mac(CR)で保存しております。 「Twitterから学ぶ,Web APIのキホン」のサンプルプログラムは正常に動いて表示出来ているのでモジュールやPerlのパスには問題ないと思います。 どうすればitunes 検索apiのjsonデータがPerlでちゃんと解析されるのかご教示お願いします。
質問日時: 2011/05/12 04:12 質問者: perlgogo
ベストアンサー
1
0
-
大量データから抽出する効率よい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週間たっても終わらないのです。
質問日時: 2011/05/10 18:50 質問者: 1204533
ベストアンサー
9
0
-
Perl cgiの文字化けを直したい (UTF8)
現在、jcode.plを使用したShift JISで構成されていた Perlのcgi を UTF-8 に改造しています。 フォームに書き込んだPAGETITLEを別ファイルへUTF-8で書きこむ際に、文字化けしてしまいます。 書きこんだファイルを開けてみると、日本語が文字化けしています(アルファベットは大丈夫) 以下のPerlのPAGETITLEをどのように改造すれば、文字化けしないで、$foundations_fileへUTF-8で書き込みすることができるのでしょうか? ※個人的にはデータ書き込みの sub REGIST 以下を改造すれば良いのではと推測していますが、どうやれば良いのか分かりません。 どうかご教示、よろしくお願い致します。 m(_ _)m ------------------------------------- #!/usr/bin/perl use utf8; binmode STDIN,":utf8"; binmode STDOUT,":utf8"; #基本セットアップファイル読込 require './setup_manage.cgi'; #このファイル $cgi = "./foundations.cgi"; #デコード処理 &DECODE; sub VIEW { #基本設定ファイルの読み込み &FOUNDATIONS_READ; 【省略】 <TABLE width="100%" border="0" cellspacing="0" cellpadding="1"><TR> <TD width="70%">変更するデータを直接書き換えて [ 編集実行 ] を押して下さい。</TD> <FORM method="post" action="./login.cgi"> <TD width="30%" align="right"><INPUT type="submit" value="メインメニューに戻る"></TD> <INPUT type="hidden" name="mode" value="main"> <INPUT type="hidden" name="pw" value="$in{'pw'}"> </FORM> </TR></TABLE> 【省略】 <TABLE border="0" cellspacing="1" cellpadding="4" bgcolor="#999999"><TR> <FORM name="SUBMIT" method="post" action="$cgi" onSubmit="return kakunin()"> <TD width="160" bgcolor="#eeeeee"> <TABLE border="0" cellspacing="0" cellpadding="1"><TR> <TD>ページタイトル</TD> </TR></TABLE> </TD> <TD width="400" bgcolor="#ffffff"> <TABLE border="0" cellspacing="0" cellpadding="1"><TR> <TD><INPUT type="text" name="PAGETITLE" size="60" value="$PAGETITLE"></TD> </TR></TABLE> </TD> 【省略】 ------------------------------------------------- # データ書き込み #------------------------------------------------- sub REGIST { #全角英数字を半角に変換 $zenkaku = '0123456789'; $hankaku = '0123456789'; $in{'PAGETITLE'} =~ s/\,/&%/g; $in{'PAGE1'} =~ s/\,//g; $in{'PAGE2'} =~ s/\,//g; $in{'PAGE3'} =~ s/\,//g; $in{'CATECOL'} =~ s/\,//g; $in{'PERIOD'} =~ s/\,//g; $in{'TABLECOL'} =~ s/\,//g; $in{'SIZECOL'} =~ s/\,//g; $in{'SIZEROW'} =~ s/\,//g; $in{'COPYRIGHT'} =~ s/\,/&%/g; #ファイルロック開始 if( $lockkey ne '0' ){ &LOCK; } #ファイルに書きこむ if (!open(OUT,">:utf8",$foundations_file)) { &ERROR( read_foundations ); } print OUT "$datenow,$in{'PAGETITLE'},$in{'INIMODE'},$in{'MODECHG'},$in{'PAGE1'},$in{'PAGE2'},$in{'PAGE3'},$in{'CATEVIEW'},$in{'CATECOL'},$in{'INICATE'},$in{'PERIOD'},$in{'RANKING'},$in{'CMODE'},$in{'RANKVIEW'},$in{'TITLEVIEW'},$in{'SRCHVIEW'},$in{'INPVIEW'},$in{'DATAROW'},$in{'TABLECOL'},$in{'BARCLR'},$in{'BARPER'},$in{'IMGPRT'},$in{'IMGSIZE'},$in{'SIZECOL'},$in{'SIZEROW'},$in{'IMGFRM'},$in{'COPYRIGHT'},$in{'GPVIEW'},"; close(OUT); #ファイルロック解除 if( $lockkey ne '0' ){ &UNLOCK; } &COMP; }
質問日時: 2011/05/05 18:53 質問者: mcse
ベストアンサー
12
0
-
MacでCPANモジュール利用について
プログラミング初心者です。うまくいかないので、ご教授願います。 Mac(Snow Leopard)でperlを学びたいと思い、 CPANモジュールをインストールしましたが、 いざ、XML::Feedを使用しようとすると、下記のエラーが出ます。 「Can't locate XML/Feed.pm in @INC ...........(続く)」 これはきちんとモジュールがインストールされていないことでしょうか? 考えられる可能性と回避方法を教えていただけないでしょうかm(_ _)m
質問日時: 2011/05/05 15:04 質問者: hakugintou4444
ベストアンサー
2
0
-
完全一致のデータだけを検索でヒットさせる!
(1) <input type="hidden" name="word" value="大阪市"> (2) if ($wd =~ /^[\w.']+$/ ? $address =~ /$wd/i : index($address, $wd) >= 0) (1)のHTMLタグから受け取った「大阪市」を(2)のCGIによってデータ検索します。 東大阪市だと問題ないのですが、大阪市だと東大阪市も一緒にヒットしてしまいます。 何処を書きかえれば良いか教えて下さい。お願いします。
質問日時: 2011/05/05 11:17 質問者: qwert789
ベストアンサー
4
0
-
(Perl)UTF-8で別ファイルに書き出したい
現在、jcode.plを使用したShift JISで構成されていた Perlのcgi を UTF-8 に改造しています。 冒頭で use utf8; を宣言した後、jcode関連の文は、全てコメントアウトしてきました。 複数ある別ファイルからデータ読み込む場合も、 open(IN,"<:utf8","$別ファイル"); という形で、"<:utf8"を挿入して、うまく読みこめています。 ただ、読み込んだ後、別ファイルへUTF-8で書きこむのが、どうしてもうまくいきません。 書きこんだ後、文字化けしてしまいます。 書きこんだファイルを開けてみると、日本語が文字化けしています(アルファベットは大丈夫) 以下のPerlをどのように改造すれば、文字コードをUTF-8で書き込みすることができるのでしょうか? どうかご教授、よろしくお願い致します。 m(_ _)m --------------------------------- #------------------------------------------------- # 編集内容登録処理 #------------------------------------------------- sub EDITREGIST { #全角英数字を半角に変換 $zenkaku = '0123456789'; $hankaku = '0123456789'; #Jcode::tr(\$in{'CLICK'}, $zenkaku , $hankaku ); $in{'attach_file'} = &AttachCheck($attach,$attach_name); #ファイルロック開始 if( $lockkey ne "0" ){ &LOCK; } if (!open(IN,"<:utf8","$linkdata_file")) { &ERROR( read_linkdata ); } @BASE = <IN>; close(IN); foreach $data (@BASE) { &LINKDATALIST; if( $in{'editnum'} eq $CNTNUM ){ if( $in{'attach_file'} eq '' ){ if( $in{'CHDEL'} eq '1' ){ $in{'attach_file'} = ''; unlink("$updir/$IMAGE"); }else{ $in{'attach_file'} = $IMAGE; } }else{ unlink("$updir/$IMAGE"); $in{'attach_file'} =~ s/$updir\///g; } $in{'LINKNAME'} =~ s/\,/&%/g; $in{'LINKURL'} =~ s/\,/&%/g; $in{'LINKURL'} =~ s/&/\&/g; $in{'COMMENT'} =~ s/\,/&%/g; $in{'COMMENT'} =~ s/\<br \/\>/!%/g; if( $in{'CLICK'} eq "" ){ $in{'CLICK'} = 0; } $new_data = "$CNTNUM,$datenow,$DATE_LMT,$DATE_ESY,$in{'OPN'},$in{'NEWMARK'},$in{'CATEGORY'},$in{'LINKNAME'},$in{'HONORIFIC'},$in{'LINKURL'},$in{'COMMENT'},$in{'CLICK'},$in{'attach_file'},\n"; }else{ $new_data = "$CNTNUM,$DATE_LINKDATA,$DATE_LMT,$DATE_ESY,$OPN,$NEWMARK,$CATEGORY,$LINKNAME,$HONORIFIC,$LINKURL,$COMMENT,$CLICK,$IMAGE,\n"; } push( @TOTAL,$new_data ); } #実際にファイルに書き込む if( !open(OUT,">$linkdata_file") ){ &ERROR( read_linkdata ); } print OUT @TOTAL; close (OUT); #ファイルロック解除 if( $lockkey ne "0" ){ &UNLOCK; } &SendFinish2; }
質問日時: 2011/05/03 22:31 質問者: mcse
ベストアンサー
4
0
-
Perlのcgiを中国語で表示可能にしたい
OS:Windows7でサーバーはロリポップを使用しております。 Perlのcgiを「utf-8」で保存し、Perl内のhtmlも、「<meta http-equiv="Content-Type" content="text/html; charset=utf-8">」などのutf-8の設定にしていますが、ffftpでutf-8の文字コードで転送すると、「※CGI もしくは SSI が正しく動作していません。」と表示されてしまいます。 ffftpのホストの設定での、文字コードは「ホストの漢字コード Unicode(UTF-8)」、「ファイル名の漢字コード Unicode(UTF-8)」にしています。 何パターンか試してみましたが、ffftpの転送時の設定が「Unicode(UTF-8)」だと、「※CGI もしくは SSI が正しく動作していません。」と表示されるみたいです。 転送時の設定を「ホストの漢字コード 無変換(SHIFT-JIS)」、「ファイル名の漢字コード SHIFT-JIS」 にすると、cgiは動作します。但し、文字化けします。→ 黒い菱形に?マークの文字化け。 どうすれば、上記問題を解決できるでしょうか。 アドバイスをお願いします。 m(_ _)m
質問日時: 2011/05/01 21:06 質問者: mcse
ベストアンサー
1
0
-
文字操作をしたjisコードをシフトjisに変えたい
携帯メールをCGIで受け取って処理するスクリプトを書いているのですが 文字コードの処理について行き詰っています。 $str = " $B$F$9$H (B"; #jisコードで"てすと" として、この文字列をjcode.pmでシフトjisに変換したいのですが $body = Jcode::convert($str, 'sjis'); このようにしても$bodyの中身は" $B$F$9$H (B"のまま変わりません。 MIME::parserでうけとったjisコードの文字列はちゃんと変換されるのでjcode.pmに問題はないと思われますが、 文字列操作をして変数に入れるとMIME::parserで受け取った場合とおなじ内容でもデコードされないとゆう結果になります。 なにか根本的に違うのでしょうか… スペースを省いてみたり $body = Jcode::convert($str, 'sjis','jis'); としてみたりしたのですが まったくダメでした。 ちょっとしたアドバイスだけでもいいのでよろしくお願いします。 あとお金がかかってもよいので、そういった問題を解決できそうなサイトなどがあれば紹介していただければと思います。 よろしくお願いします。m(__)m
質問日時: 2011/05/01 17:06 質問者: hosogikazuko
解決済
1
0
-
動的ハッシュを作って取り出したいのですが・・・
お世話になります。 フォームから送られてくるデータを動的に作ったハッシュで参照出来るように取り組んでるんですが、思ったように出来ず思い悩んでおります。 どうすれば、意図した形でデータを取り出すことが出来ますでしょうか my %FORM = ( 'd01' => 'あ', 'd02' => 'い', 'd03' => 'う', 'd04' => 'え', 'd05' => 'お', 'd06' => 'か', 'd07' => 'き', 'd08' => 'く', 'd09' => 'け', 'd10' => 'こ', ); for(sort { $FORM{$a} cmp $FORM{$b} } keys %FORM){ print "$_ = $FORM{$_} \n"; } $list="d01,d02,d03,d04,d05,d06,d07,d08,d09,d10,"; $i=-1; foreach (split/,/,$list){ $i++; $hash{$_}=$i; } for(sort { $hash{$a} <=> $hash{$b} } keys %hash){ print "$_ = $hash{$_} \n"; $view = ${"FORM$_"}; print "$view\n"; }; 最後のprint "$view\n";箇所で、 $list="d01,d02..." を split/,/,$list したので、 $FORM{d01} $FORM{d02} となるようにして、 「あ い う え お」と取り出したいのです。 ご教授のほど、よろしくお願い致します。
質問日時: 2011/05/01 08:58 質問者: taku0
ベストアンサー
2
0
-
指定された日付の前日を求める
お世話になります。 標題のとおりですが、 $ymdに20110517のように日付が指定されます。 この前日を求めたいのですが、コーディングを教えていただけますか。 宜しくお願いします。
質問日時: 2011/04/30 22:55 質問者: nagahaha
ベストアンサー
1
0
-
Perlでcssを使わないで3カラムにしたい
現在、Perlでcgiを作成していますが、ページの最上部にヘッダー、ページの両端にメニューや広告、中央にメインコンテンツを配置する3カラム(三段組み)、最下部をフッターにしたいと考えています。 現在、メインコンテンツは完成しております。 cssは、使わないで上記のようなレイアウトをPerlで組みたいのですが、上記にようにしたい場合は、どのように書けば良いのでしょうか? 横幅全体は800。(ヘッダーとフッターも横幅は800) 左メニュー180、中央メインコンテンツ 440 、右メニュー180 で組みたいと思っています。 お手数をおかけ致しますが、アドバイスよろしくお願い致します。
質問日時: 2011/04/29 23:42 質問者: tanaka150
ベストアンサー
2
0
-
cgiメールの文字変換がうまくできない
CGIメールです。 元々shiftjisなので、これをiso-2022-jpに変換させようとしてます。 $charset = "iso-2022-jp"; open(MAIL,"| $sendmail -t") || &error("失敗"); print MAIL "To: <$to>\n"; print MAIL "From: <$from>\n"; &jis("タイトル"); &base64("$msg"); print MAIL "Subject: $str\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-type: text/plain; charset=$charset\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; foreach ( split(/\n/, $body) ) { &jis("$_"); print MAIL $_, "\n"; } close(MAIL); sub jis{ $msg = $_[0]; Encode::from_to($msg, "shiftjis", $charset); ####1#### } sub base64 { use MIME::Base64; $str = $_[0]; if($str =~ /[^!-~\s]/){ $str = encode_base64($str, ""); if($charset eq "utf8"){ $str = '=?utf-8?B?' . $str . '?='; }else{ $str = '=?iso-2022-jp?B?' . $str . '?='; } } } このようにしてみたのですが、タイトル部分はきちんと表示されるのですが、ボディー部分が文字化けしてしまいます。(メーラーで手動にてshit-jisにエンコードしたらボディー部分が読めタイトル部分は文字化けする) Encode::from_to($msg, "shiftjis", $charset); の$charsetを"$charset"にしても同じ現象です また、元々参考にしたものでは####1####に retern $msg; があったのですが、これを入れるとsyntax errorになったので、これをコメントアウトしたらエラーにはならず送信そのものはできました ただ目的の文字変換ができないのですが、どこをどう改善すればいいでしょうか。 どうかご存じの方ぜひ教えてください。 よろしくお願いします。
質問日時: 2011/04/28 20:56 質問者: choei
ベストアンサー
1
0
-
アクセスカウンターでデータが削除されてしまう。
プログラムのアクセスカウンターをするプログラムを作成しましたが、アクセスカウンターのデータが消去されてしまいます。 プログラム抜粋 (ここから) #アクセスカウンターカウント数計上ロジックを入れる $data = ""; open(IN11,"$countcsv") || &error(" countcsv をopen出来ません"); flock(IN11,1); while($lines11 = <IN11>) { ($seq,$acc) = split("\,", $lines11); if ($page == $seq) {$acc = $acc +1; } $data .= "$seq,$acc\n" } close(IN11); open(IN21,">$countcsv")|| &error(" countcsv をopen出来ません"); flock(IN21,2); print IN21 "$data"; close(IN21); (ここまで) count.csvの構成は以下のようになってます。 (ここから) 1,0 2,0 3,0 4,0 5,0 6,0 7,0 8,0 9,0 10,0 (ここまで) カウンターを計測するデータ(行数)が多いと、データが全てなくなってしまいます。 ファイルロックの方法に問題があると思ってますが、どこが悪いのかがわかりません。 ご教授いただけますと助かります。 よろしくお願いいたします。
質問日時: 2011/04/27 13:24 質問者: hihin2003
ベストアンサー
2
0
-
Perl言語のプログラムで多次元配列について教えて
Perl言語のプログラムで多次元配列について 教えて欲しい。 1.Deta1(evt.dat)ファイル 2.Deta2(men.dat)ファイル 多次元配列のDeta3(kad.dat)ファイル 縦方向にDeta1 $n(配列順番) 横方向にDeta2 $t(配列順番) Deta2 → Deta1 X0 X1 Xx ↓ Y0 Z0,0 Z1,0 Zx,0 Y1 Z0,1 Z0,1 Zx,1 Yx Z0,x Z0,x Zx,x Deta3には($joi,$com)のデータがある ・プグラム1としいはZ1,0からZ0,xまで新規登録 及び変更登録をするプグラム ・あと一つのプグラム2はZ0,1の変更登録をするプグラム 表示プグラムは不要です。 open(FILE, "$kad_file"); @joi=<FILE>; close(FILE); foreach ($joi,$com) この間のプグラムを教えて欲しい。 ・プグラム1 ・プグラム2 open(FILE, ">$kad_file"); print FILE @joi; close(FILE);
質問日時: 2011/04/24 21:54 質問者: tmbc_only007
解決済
1
0
-
cgiの投票回数制限設定について(Perl)
投票cgiを作成していますが、以下のPerlでは、同一IPから1日1回の投票しかできません。 同一IPからの投票を1日連続5回まで許可する仕組みにしたいと考えています。(6回目以降は単にカウントされないだけで警告等は出さない) 以下のPerlをどのように改造すれば良いか具体的にアドバイスを頂けると大変助かります。 かなり専門的な内容で恐縮ですが、困っておりますので、何卒よろしくお願い致します。 m(_ _)m --------------------- # IPアドレスのチェック sub IpCheck { if (!-e $iplog) { &TimeLog; } $last = (localtime((stat($iplog))[9] + $jisa))[3]; $today = (localtime($nowtime))[3]; if ($last != $today) { unlink($iplog); &TimeLog; } open(TLOG,"<$iplog"); @IP = <TLOG>; close(TLOG); $l = 0; foreach (@IP) { $_ =~ s/\r|\n//g; if ($_ =~ /^$addr/) { &NoCnt; } elsif ($l == $#IP) { if (!open(RTIP,">>$iplog")) { &Error(4); } print RTIP "$addr\n"; close(RTIP); &CNTUP; } $l++; } } sub TimeLog { if (!open(TIME,">$iplog")) { &Error(5); } print TIME "$addr\n"; close(TIME); chmod(0666,$iplog); &CNTUP; } #------------------------------------------------- # クリックカウントアップ sub CNTUP { #ファイルロック開始 if( $lockkey ne '0' ){ &LOCK; } if (!open(IN,"$linkdata_file")) { &ERROR( read_linkdata ); } @BASE = <IN>; close(IN); foreach $data (@BASE) { #データリスト読込 &LINKDATALIST; if( $in{'targetno'} eq $CNTNUM ){ $COUNTERUP = $CLICK + 1; $targeturl = $LINKURL; $new_data = "$CNTNUM,$DATE_LINKDATA,$DATE_LMT,$DATE_ESY,$OPN,$NEWMARK,$CATEGORY,$LINKNAME,$HONORIFIC,$LINKURL,$COMMENT,$COUNTERUP,$IMAGE,\n"; }else{ $new_data = "$CNTNUM,$DATE_LINKDATA,$DATE_LMT,$DATE_ESY,$OPN,$NEWMARK,$CATEGORY,$LINKNAME,$HONORIFIC,$LINKURL,$COMMENT,$CLICK,$IMAGE,\n"; } #ファイルの最初にデータを保存する push( @TOTAL , $new_data ); } #実際にファイルに書き込む if (!open(NOTE,">$linkdata_file")) { &ERROR( read_linkdata ); } print NOTE @TOTAL; close(NOTE); #ファイルロック解除 if( $lockkey ne '0' ){ &UNLOCK; } #HTML出力 print "Location: $targeturl\n\n"; exit;
質問日時: 2011/04/24 20:05 質問者: mcse
ベストアンサー
2
0
-
金額にマッチする正規表現について
ある、複数行の文章内に散在する 最低4桁以上の金額を全て抽出するには? 例えば \#### \####- ####円 と、それぞれ3桁を「,」で区切った数値を金額とみなす場合 1度のパターンマッチで、 上記3つのバリエーションとカンマ付き全種の 不純物が入らない厳密なパターンを記すことは、できますでしょうか? 追記、 以下のような場合は金額とみなしません。 ####(金額に関する記号が前後に付かないため) ####-(頭に\が足りないマイナス単独なため) ###(3桁しかないため) # ###(数値の間の区切りがカンマ以外のため)
質問日時: 2011/04/24 01:59 質問者: akaginoyama
ベストアンサー
3
0
-
ActivePerl/Tk で dumpが勝手に
perl, v5.8.6で、Perl/Tkを利用した環境です。 従来は、Windows-XP(x32)で利用していて、特に問題なかったのですが、 同じ環境をWindows7(x32)に導入して利用しようとしたところ、 Menu メソッド呼び出しのところで、ちょうど Devel::peekのdumpで表示させた ような内容のものが、DOSプロンプト上に出てしまいます。 ↓こちらの記事(英文)に書かれていることも試してみましたが、解決できませんでした。 http://community.activestate.com/forum-topic/perl-tk-cause-warning Windows7だからということではなさそうですが、 この表示が出てしまう原因、出さなくする方法について、教えてください。 何かご存知の方、よろしくお願い致します。 サンプルスクリプト: test.pl ----------------------------- use strict; use Tk; my $mw = MainWindow->new(); my $menu = $mw->Menu(); MainLoop; ----------------------------- このスクリプトをWindows7環境上で実行すると、 MainWindowのダイアログは画面に正しく表示されていますが、 DOSプロンプトで、下記のメッセージも出てしまいます。 ⇒4行目(my $menu = $mw->Menu();)をコメントアウトするとこの表示は出ません。 ----------------------------- C:\Perl\Tk\Win7>test.pl @ 535 not utf8 SV = PV(0x3d4f9d0) at 0x3d53870 REFCNT = 2 FLAGS = (POK,pPOK,UTF8) PV = 0x3d0d9e4 "\203\201\203C\203\212\203I 9"\0 [UTF8 "\x{c1}C\x{c3}C\x{ca}\x{283}\x{c9}I 9"] CUR = 10 LEN = 11 SV = PVMG(0x214bf74) at 0x3d53870 REFCNT = 2 FLAGS = (SMG,POK,pPOK,UTF8) IV = 0 NV = 0 PV = 0x3d0d9e4 "\203\201\203C\203\212\203I 9"\0 [UTF8 "\x{c1}C\x{c3}C\x{ca}\x{283}\x{c9}I 9"] CUR = 10 LEN = 11 MAGIC = 0x3d5d5a4 MG_VIRTUAL = &PL_vtbl_utf8 MG_TYPE = PERL_MAGIC_utf8(w) MG_LEN = 10
質問日時: 2011/04/22 00:41 質問者: supob
ベストアンサー
1
0
-
perlでの配列について
配列の配列について教えてください。 以下のようなテキストから値を取得し、A,B,Cの値をそれぞれ別の配列に格納し、A,B,Cの平均値を出す処理を行っているとします。 ----- A=100 B=200 C=300 A=110 B=210 : ----- 現状、以下のような状態です。 @arrayA=(); @arrayB=(); @arrayC=(); : (テキストを読み込み) : ・読み込んだ行がA=XXXならarrayAにpush push(@arrayA,"100"); ・読み込んだっ行がB=XXXならarrayBにpush push(@arrayB,"100"); : (各配列の要素の平均値を出す) このやり方だと、グループが増えるとそのまま行数が増えて冗長なので、グループごとの配列を1つの配列にまとめたいのです。 Webで初期値を入れた形で説明しているのはよくみるのですが、今回のように空の配列に値をいれていくにはどうすればよいのでしょうか?(そもそも宣言の仕方もわかりません)。 また、配列の配列?とした場合、以下のような処理はできるのでしょうか? (1)配列の1つ目の要素(の配列)にpushする(現状でのarrayAにpushに該当) push(@arrayAll[0],"test");
質問日時: 2011/04/20 21:59 質問者: ruiruirui58
解決済
2
0
-
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);
質問日時: 2011/04/18 18:45 質問者: azicyan
ベストアンサー
4
0
-
Perl ファイル一気読み後の正規表現について
Perlで以下の通り、 htmlファイルを全て読み込んだ後に正規表現を当てたいのですが、うまくいきません。 恐縮ですが、原因をご存知の方いらっしゃいましたら教えて頂けませんでしょうか。 また、他に良い解決方法がありましたら教えて頂けると幸いです。 ※PC環境はwindows7, perl5.12です。情報に不足がございましたらご指摘下さい。 ----- #--test.html(左側の数字は行数) 000001 <dl> 000002 <dt>aaa</dt> 000003 <dd>12345</dd> 000004 </dl> (中略) 120001 <dl> 120002 <dt>bbb</dt> 120003 <dd>6789</dd> 120004 </dl> #--test.pl open IN , "test.html"; local $/ = undef; $data = <IN>; close IN; $data =~ s|<td>bbb</td>|<td>ccc</td>|; print "$data\n"; ----- ファイルの始めの方だと当たるのに、後半では当たりません。 正規表現の対象として大きすぎるんでしょうか・・・。 $data =~ s|<td>aaa</td>|<td>ccc</td>|; は、当たりますが $data =~ s|<td>bbb</td>|<td>ccc</td>|; だと当たりません。 どうぞよろしくお願いいたします。
質問日時: 2011/04/17 12:12 質問者: wcs_abe
ベストアンサー
4
0
-
perlでCSV形式ファイルのアップロード
本日、同じ質問をしたものです。 前回の問題は解決したのですが、ファイルがアップロードできないで悩んでします。 CGIのプログラムは以下のソースです。 #! c:/perl/bin/perl use CGI; # CGIヘッダーの出力 print "Content-type: text/html\n\n"; my ($query,$fileName); $query = new CGI; $fileName = $query->param('fileName'); open(OUT, ">./a.csv"); binmode(OUT); while(read($fileName,$buffer,1024)) { print OUT $buffer; } close(OUT); close($fileName); #ファイルハンドルをcloseしています。 exit ; ファイルは、作られるのですが、中身が書き込まれません。 どなたか教えてください。 お願いします。
質問日時: 2011/04/15 17:33 質問者: hirocyan999
ベストアンサー
1
0
-
perlでCSV形式ファイルのアップロード方法
perlでCSV形式ファイルのアップロード方法を教えてさい。 htmlで <HTML> <BODY> <FORM action="excel読み込み.cgi" enctype="multipart/form-data" method="post"> フレアシステムのファイル: <INPUT type="file" name="upload_file" size="60"><BR> <INPUT type="submit" value="読み込み"> </FORM> </BODY> </HTML> として、ファイル名の指定をして、読み込みボタンを押すと、excel読み込み.cgiを呼び出すのですが、プログラムの内容が表示されるだけで終わってしまいます。 excel読み込み.cgiのプログラムは以下の内容です。 #! c:/perl/bin/perl use CGI; $query = new CGI; $filename = $query->param('upload_file'); while(read($filename, $buffer, 2048)) { $file .= $buffer; } @files = split(/\\/, $filename); ($basename, $exp) = split(/\./, $files[-1]); $new_file = $basename . "." . $exp; # ファイルを指定ディレクトリにコピー #open(OUT, "> c:\\foo\\$new_file"); open(OUT, "> c:\\$new_file"); binmode(OUT); print(OUT $file); close(OUT); print "Content-type: text/html\n\n"; print "[$basename] [$exp]\n"; print "正常終了\n"; exit; CGIのプログラムを色々と調べて、別のないようにしても同じようにプログラムがそのまま表示されてしまいます。 どなたか教えてください。 宜しくお願いします。
質問日時: 2011/04/15 16:47 質問者: hirocyan999
解決済
1
0
-
「Learning Perl」(第4章、問3)
Perl初心者です。 「Learning Perl」(オライリー社、第5版)を勉強中なのですが、4章の練習問題3でつまずいています。 #!/usr/bin/perl use strict; sub total { my $sum; foreach (@_) { $sum += $_; } $sum; } sub average { if(@_ == 0) {return} my $count = @_; my $sum = total(@_); $sum/$count; } sub above_average { my $average = average(@_); my @list; foreach my $element (@_) { if($element > $average) { push @list, $element; } } @list; } my $average = average(100, 1..10); print "\$average = $average\n"; my $barney = above_average(100, 1..10); print "\$barney = $barney\n"; とやったのですが、結果が $average = 14.0909090909091 $barney = 1 となってしまいます。 ($averageの値は正しいのですが、$barneyの値が100となってほしいのに、1になってしまっています。) すみませんが、識者の方、どこが悪いのか、ご教授お願いします。
質問日時: 2011/04/09 20:56 質問者: study_perl
ベストアンサー
2
0
-
複数のデータを抜き出す。
お世話になります。 くじのプログラムを書いていますが、 4桁の番号のくじを引いて貰い、 毎回数人ずつ抽選します。 当選者を選ぶところで教えて欲しいのですが、 例えば、0100 2455 4782 といった3個が当選となったときの 命令です。 if ($kekka =~ /[0100][2455][4782]/){ とやったのですがダメでした。 [ ]の中は1桁しかダメなのでしょうか。 ここら辺が分かっていません。 正しい書き方を教えてください。 宜しくお願いします。
質問日時: 2011/03/29 10:03 質問者: nagahaha
ベストアンサー
1
0
-
Xサーバーのcronでcgiが自動更新されません。
perl初心者です。RSSを取得してタイトルや内容をhtmlに吐き出すというプログラムを作成しています。Xサーバーで指定時間に指定コマンド(プログラム)を自動的に実行させるサーバーの機能(cron)といものがあったのでマニュアル http://www.xserver.ne.jp/man_program_cron.php を見て自動更新しようと試みているのですがプログラムが実行されません。 hello.cgiというプログラムを実行しようとしているので マニュアルにある絶対パスの記入例の通り /home/●●●/▲▲▲/public_html/hello.cgi とXサーバーのCron設定で記入しています。自動更新の時間になったら「Cron結果の通知アドレス」で設定したメールは届くのですがプログラムは実行されてません。 cronの機能を使う際perlのほうで(ここではhello.cgi)何か記述する必要があるのでしょうか?もしくは何かモジュールとか必要なのでしょうか? ps. cron以外でもperlのプログラムを自動的に動かす方法があったら教えて下さい。宜しくお願いします。
質問日時: 2011/03/29 02:05 質問者: perlgogo
ベストアンサー
3
0
-
日付を固定長にしたい
早速ですが、 ”15日分”のように始まるフィールドを持つレコードがあります。 このレコードを抽出基準日付(2桁、例えば”09”)で抽出したいのですが、 抜きたいレコードの日付は1桁の時には前にゼロがありません。 (例えば ”9日分”の如く) どのように考えればよいでしょうか。 抽出基準日付の2桁を1桁にするということは別の理由で出来ません。 宜しくお願いします。
質問日時: 2011/03/27 08:45 質問者: nagahaha
ベストアンサー
1
0
-
可変CSVから固定CSVへのファイル加工
perlでCSVファィルの加工するプログラムを作ろうと思っております。 プログラム初心者な為どれから手を付ければ良いのか 判りません。 宜しければ サンプル等作っていただければありがたいです。 1.指定されたフォルダの中の 最新更新日付のファイルを読み込みむ 2.5分置きに可変CSVで出力されるデータを出力を 10分単位の固定CSVへ出力する 3.出力の際には以下の固定数字、時間、文字、数字等を入れ 加工した上で固定系CSVの出力をしたいです。 ・固定の数字20450△△△, ・固定の数字 01, ・年月日時間 YYMMDDhhmm, ・固定数字 01, ・固定文字 TP, ・固定数字 01, ・固定文字 +か-, 元データが△△△19.2の場合は+を出力 -19.2の場合は-を出力 4カラム目を19.5 の場合△△195 ・固定文字 TA, ・固定数字 01, ・固定文字 +か-, 元データが△△△12.2の場合は+を出力 -12.2の場合は-を出力 4カラム目を19.5 の場合△△195 入力のファイル名 20110301.csv ファイルの中身 17549,2011/3/25,0:00:00,19.5,12.2 17550,2011/3/25,0:05:00,19.6,12.2 17551,2011/3/25,0:10:00,19.5,12.2 17552,2011/3/25,0:15:00,19.5,12.2 17553,2011/3/25,0:20:00,19.4,12.2 17554,2011/3/25,0:25:00,19.4,12.2 17555,2011/3/25,0:30:00,19.4,12.2 17556,2011/3/25,0:35:00,19.3,12.2 17557,2011/3/25,0:40:00,19.3,12.2 17558,2011/3/25,0:45:00,19.2,12.2 17559,2011/3/25,0:50:00,-19.2,12.2 ↓ 出力のファイル名 10_200203.dat 20450 , 01,201103250010,1,TP,1,+ 195,TA,1,+ 122 20450 , 01,201103250010,1,TP,1,+ 195,TA,1,+ 122 20450 , 01,201103250020,1,TP,1,+ 194,TA,1,+ 122 20450 , 01,201103250030,1,TP,1,+ 194,TA,1,+ 122 20450 , 01,201103250040,1,TP,1,+ 193,TA,1,+ 122 20450 , 01,201103250050,1,TP,1,+ 192,TA,1,+ 122
質問日時: 2011/03/25 16:15 質問者: okun0130jp
解決済
1
0
-
shとperlのデータ連携&perl出力
初めて記載します。宜しくします。 perlでプログラムするのが初めてでなので、大分間違ってるかもしれません。 ※UNIX環境でシェルで日付差分(yyyymmddhhmmss)を求めたいのですが、「date -d」コマンドは使用出来ません。 シェルを実行しコマンドラインにて入力された【引数1】:実行区分(1 or 2)【引数2】:日付(yyyymmddhhmmss)、【引数3】:日付(yyyymmddhhmmss)と区分をperlに引数として渡して、perlでは"引数3-引数2"をして日数を算出しファイルに出力させたいです。 perl名:MCPFZAR_Compl.pl 実行コマンド例: perl MCPFZAR_Compl.pl 1 20110302000000 20110306000000 以下にperlのプログラムを掲載します。 #!/opt/perl/bin/perl ⇒入力パラメータチェック実行 # 日付1を年、月、日、時、分、秒に切り分け $L_Year = int(substr($ARGV[1],0,4)); $L_Mon = int(substr($ARGV[1],4,2)); $L_Day = int(substr($ARGV[1],6,2)); $L_Hour = int(substr($ARGV[1],8,2)); $L_Min = int(substr($ARGV[1],10,2)); $L_Sec = int(substr($ARGV[1],12,2)); # 取得日付チェック関数を実行する。 ($L_Ret, $L_Ret_Msg) = &MCPFLCF_DayExists($L_Year, $L_Mon, $L_Day, $L_Hour, $L_Min, $L_Sec); # 異常終了した場合 if( $L_Ret != 0 ){ # エラーを返却する。 return ($L_Error_End, "$L_Err_MSG_4 [$L_Ret_Msg]"); } # 日付1を秒に変換 $L_Time1 = timelocal($L_Sec, $L_Min, $L_Hour, $L_Day, $L_Mon - 1, $L_Year); ⇒同様に日付2も変換 # 日付1と日付2の差分を取る。 $L_TimeRet = ($L_Time2 - $L_Time1); # ファイルに書き込む為に、ファイルopenしてから書込み open (OUT,"> $outfile"); # 結果形式種別が1の場合 if($ARGV[0] == 1){ # 結果を日数で参照渡しする。 $L_LET = int($L_TimeRet / (60 * 60 * 24)); print OUT "$outfile"; } # 結果形式種別が2の場合 elsif($ARGV[0] == 2){ # 結果を秒で参照渡しする。 $L_LET = $L_TimeRet; print OUT "$outfile";; # CLOSEする close(OUT); シェルを実行すると、エラーにはなりませんが ファイルの出力もされません。 かなりどうしたらよいかわからない状態なので回答宜しくお願い致します。 足りない情報がありましたらご教授願います。
質問日時: 2011/03/24 23:01 質問者: chabakof
ベストアンサー
2
0
-
perlでコマンドプロンプト実行
いつもお世話になります。 現在、jperlを使用し、 あるフォルダ内の中にあるサブフォルダをlaplusを使用し コマンドラインから圧縮をかけるというスクリプトを作成しております。 そこで、下記ロジックを実行するとエラーになります。 【ロジック】 $cmd = "\"c:\\Program Files\\Lhaplus\\Lhaplus.exe\" /c:lzh o:\"C:\\Users\\testtaro\\Documents\\LAPLUS_TEST\" \"C:\\Users\\testtaro\\Documents\\LAPLUS_TEST\\2011-03-11(0100)\""; system($cmd); 【エラーメッセージ】 'c:\Program' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 「$cmd 」の内容をデバック出力しそれを直接コマンドプロンプトで実行すると 正常に圧縮されます。 おそらく「Program Files」の半角スペース内で切れてしまっているのだと思いますが、 ダブルクォテーションでくくるやり方が間違っているのでしょうか。 超初心者の質問で大変申し訳ありませんが宜しくお願いします。
質問日時: 2011/03/24 14:39 質問者: punipuni_2
ベストアンサー
1
0
-
MySQL・CGI/Perl言語を学びたい。
プログラムの学習を始めようと思いますが、MySQL・CGI/Perl言語を学ぼうと思っております。 そこでどの言語から始めたらいいのか?お薦めの書籍はどんな物か等など教えて頂きたいです。 学びたい言語とは異なりますが以前、やさしいJava第2版で学習していましたが、中盤以降から何故この機能が必要なのか?また具体的にどういった場面で使用するのかが書かれてなく只やり方しか書かれてなく、挫折してしまいました。 時間が出来た事もありまして最近になって又興味を持ち始めたので、どの言語からの学習がいいのか、 そしてお薦めの書籍(どういった場面で使用するプログラムか具体的に書かれている等)がありましたらよろしくお願いします。 最終的にはCGIプログラムからデータベースにアクセス?してデータの追加・削除、不特定多数の方が出来るログイン機能等の作成(簡単に言えば通販サイトの仕組や、よくあるCGIゲームの様な代物)到達するくらいのレベルが目標です。
質問日時: 2011/03/24 12:41 質問者: EmpE
ベストアンサー
1
0
-
Perlで60進数を作りたい
Perlで月盤の60進数を作って頂きたいんです。 西暦2008年12月=1 西暦2009年1月=2 西暦2009年2月=3 ・・・ 西暦2013年11月=60 アルゴリズムを教えてください。 宜しくお願い致します。
質問日時: 2011/03/19 11:38 質問者: cutisei
ベストアンサー
3
0
-
空メールの自動返信プログラムの作成
http://www.plusmb.jp/2008/10/03/444.html こちらのページを参考にvpopmailを使って空メールの自動返信プログラムを作ってます。 固定のメールアドレス(hoge@hogehoge.jp)では問題なく出来たのですが、引数を絡めて処理する必要(hoge_hige1@hogehoge.jp※hoge1は引数)が出てきたため、そのように拡張したいのですが、どういう風にプログラムに流していいかわからず困っています。 まとめると hoge@hogehoge.jpで空メール送信⇒hoge.plを起動⇒hoge.plで送られてきたアドレスに返信 はできるのですが、 hoge_hoge1@hogehoge.jpで空メール送信⇒hoge1があるためhoge.plを起動できない ということです。 小さなことでもかまわないのでよろしくお願いいたします。
質問日時: 2011/03/19 02:21 質問者: keeeeeeeen
ベストアンサー
1
0
-
perlでのオブジェクト指向の書き方
以下のPHPソースをPerlで書き直したいのですが、Perlのコンストラクタがイマイチわからないので どなたかご教授ください。 可能であれば以下のソースのperlバージョンを記載して頂けると幸いで御座います。 ○呼び出し側 ・index.inc require_once('common.inc'); require_once('db.inc'); class index { var $objCommon= ''; var $objDB= ''; function index() { $this->objCommon = new common; $this->objDB = new db("mysql"); } function main() { //DB接続 $db_connect = $this->objDB->connect(); //DBから値を取得 $data = $this->objDB->sample($db_connect); } } ○呼び出される側 ・db.inc class db{ var $db_dsn_type; function db_wrap($db_type){ $this->db_dsn_type = $db_type; $this->objCommon = new common; } 各function } ・common.inc class common{ 各function } ※コンストラクタなし
質問日時: 2011/03/18 08:45 質問者: rapmaster7
解決済
3
0
-
2次元配列内の各配列の任意番目の値のリストを取る
$_ = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] 例えばこのような2次元配列からリスト(2, 5, 8)を一発で取る式はありますか イメージ的には、 $$_[0, 1, 2]->[1] のようなことをしたいのですが・・・
質問日時: 2011/03/17 05:45 質問者: zyousuke
ベストアンサー
1
0
-
perl で環境変数を表示できない
perlの初心者です。下記のCGIを実行しましたが、全く表示しません。 最初の「環境変数」と言う文字も表示しません。 どこか初歩的なエラーがあると思いますが、わかりませんので質問させていただきます。 --- #!/usr/local/bin/perl print "Content-type: text/html", "\n\n"; print "<HTML><BODY>", "\n"; print "<H1>環境変数</H1><HR>", "\n"; foreach my $key( keys %ENV ){ print "$key: $ENV{$key}<BR>", "\n"; } print "<HR>", "\n"; print "</BODY></HTML>", "\n";
質問日時: 2011/03/14 22:39 質問者: hi-kochan
ベストアンサー
3
0
-
CGIデコードでつまづいています。
PerlCGIのデコードでつまづいています。jcode.plで$valueの値を「%E3%81%BF%E3%81%AE%E3%82%8A%E5%8F%B0」から「みのり台」の日本語に変換しようとしたのですが「%E3%81%BF%E3%81%AE%E3%82%8A%E5%8F%B0」が返されてうまくいきません。申し訳ありませんが知恵を貸して頂けないでしょうか、よろしくお願い致します。 #!/usr/bin/perl require './jcode.pl'; #デコードするためのプログラム # プラウザからのデータ取込み #if ($ENV{'REQUEST_METHOD'} eq "POST") { # read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); #} #else { $buffer = $ENV{'QUERY_STRING'}; #} # プラウザからのデータ変換 #$i = 0; #※2 @pairs = split(/&/,$buffer); foreach $pair (@pairs) { #1行毎に$name,$valueを取り出す ($name, $value) = split(/=/, $pair); # 変換演算子 tr + を スペースに置き換え # $value =~ tr/+/ /; # 変換演算子 s/// 単語の構成文字にマッチ # $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # " を " に変換 # $value =~ s/"/"/g; #\n を "" に変換 # $value =~ s/\n//g; print qq( <tr><td>やった</td></tr> ) , "\n"; # jcodeでデコードがうまく出来ませんでした。 # 日本語に変換(デコード処理部分) &jcode'convert(*value,'sjis'); &jcode'convert(*$name,'sjis'); # $FORM{$name} = $value; #※1 # @num[$i]=$value; #※2 # $i=$i++; #※2 # $str = decode('shiftjis', $value); # $value = encode('shiftjis', $str); } @varuee = split(/&*q=/,$ENV{'QUERY_STRING'}); print qq( <HTML> <HEAD> <TITLE>画像の検索結果</TITLE> </HEAD> <BODY bgcolor="#FFFFFF"> <H2 align="center">画像データベースの検索結果</H2> <!--画像の検索結果を2~3件ためしに表示--> <BR> <hr> <CENTER> <table> ); print qq( <tr><td>$value</td></tr> ) , "\n"; exit;
質問日時: 2011/03/13 13:25 質問者: gusutaf
ベストアンサー
1
0
-
フォームで選択された内容により起動画面をかえる
たとえば、ショッピングサイトのオーダーフォームなどで、 お客様情報(氏名、発送先住所、決済方法)を入力してもらい、「注文確定」ボタンを押す。 このとき、「決済方法」で「銀行振り込み」が選択されていたら、次に起動する画面は「終了画面」。 「クレジットカード決済」が選択されていたなら、合計金額などの情報をPOSTしてクレジット決済代行会社の決済ページを起動する。。 ということは可能なのでしょうか? Perlでなら、そのような分岐処理は実現可能でしょうか?
質問日時: 2011/03/13 02:08 質問者: zruzru
ベストアンサー
1
0
-
Perl CGIで、アップロードができない
Perl my $fhandle = $query ->upload('A'); HTML <INPUT TYPE="HIDDEN" VALUE="C:\temp\1.txt"/> ボタンクリックで、JavaScriptでHTMLのhiddenに値をセットしています。 その値をPerlでuploadすると、値がセットされません。 <INPUT TYPE="FILE" で、手動でセットすると上手くいきます。 なんんとかHIDDENでできないでしょうか? FILEでしか駄目な場合、JavaScriptで、FILEにセットする方法をご教授下さい。 今、現状はIFRAMEでFILEで選択したファイルパスをボタンクリックで、メインのFORMのHIDDENに渡して、CGIを呼んでいます。
質問日時: 2011/03/09 08:47 質問者: Mark0817
ベストアンサー
2
0
-
漢字の扱い
早速ですが、 覚えたことをメモ(形式は普通の日本語テキスト)しており、 あとから検索でキーワードを与えると該当の文章を抜き出し表示するようなcgiを作っています。 基本的には上手く行くのですが、漢字をキーワードに入れると抜き出せるときと、抜き出せないときがあります。 抜き出しは此処で教わった、 if($target =~ m/$key/i) {実行rtn を使っています。 どのような対処が必要でしょうか。 理由と対処法を教えてください。 宜しくお願いします。
質問日時: 2011/03/05 21:04 質問者: nagahaha
ベストアンサー
1
0
-
外部サイトの内容の取得
対象サイトの内容を取得するCGIを構築したいのですが、うまくいきません。 対象サイトがJavascript中心に構成されているせいでしょうか。 原因の判る方、どうかご教示願います。m(__)m #!/usr/bin/perl use LWP::Simple; my $html = get("http://jun.sakura.ne.jp/~dk3/result/result225.html"); #相対指定部分の置換 $mae = '\.\./'; $ato = 'http://jun.sakura.ne.jp/~dk3/'; $html =~ s|$mae|$ato|g; print "Content-type: text/html\n\n$html\n";
質問日時: 2011/03/05 10:21 質問者: png_network
ベストアンサー
3
0
-
perlとOLEでのExcelのフォント色を取得
お世話になります。 Perl の OLEを使用して、エクセルの解析を行なっています。 そこで、エクセルの1つのセルに入っている文字の赤色の部分だけを取得したいと思います。 、 例えば、そのセルには [ わたしは チョコレート が好きです ] と書いてあり、 「チョコレート」が赤、その他は黒で書かれています。 それらのようなセルがA列に10行あり、 赤い部分の文字だけPerlのOLEで取得したいのですが、うまくいきません。 試しに ColorIndex を使用してみたのですが、取得できませんでした。 どなたかご存知の方がいらっしゃいましたら、方法をご教授いただけませんでしょうか。 よろしくお願いいたします。
質問日時: 2011/03/04 14:07 質問者: g2_desitny
解決済
1
0
-
perlで配列の要素が空なのを知るには?
教えてください。 例えば、perlの次の様な要素が3つある配列で、 @t = ('A',,'C'); 2要素目が空で有ることを判別したいのですが、どうしたら良いでしょうか?
質問日時: 2011/03/02 15:06 質問者: Silmaril
ベストアンサー
4
0
-
perlでIEのクッキーを削除したい
WinXP SP3,IE8を使っています。 この環境で、クッキーを自動削除するアプリを作りたいのですがうまくいきません。 どの様にすればいいでしょうか? ちなみに、PERL下記スクリプトを作って見ましたが、 opendir(DIR, "C:/Documents and Settings/main/Local Settings/Temporary Internet Files/"); @dirs = readdir(DIR); closedir(DIR); open(F,">>filenames.txt"); print F join("\n",@dirs); close(F); 出力結果を見ると、 . .. AntiPhishing Content.IE5 Content.MSO Content.Word desktop.ini gegl-0.0 となっており、削除するためのファイル名すら取得できずお手上げ状態です・・・ どなたか、詳しい方教えて頂けないでしょうか? 宜しくお願い致します。
質問日時: 2011/03/01 11:58 質問者: ertf
ベストアンサー
1
0
-
Perl正規表現わかりますか?
下記のPerl正規表現ですが、どんな意味か分かるでしょうか? $var =~ s!/([^/]+|~(\.\.))/\.\./!/!g 参考書も読んでみたのですが分かりませんでした(セットされている文字列にどんなマッチング、置換をしているのでしょう) お分かりの方いれば、よろしくお願いします。
質問日時: 2011/02/28 22:37 質問者: kitt31
ベストアンサー
2
0
-
Perl(cgi)からPerl(cgi)への引数
(1)Perl(cgi)から(2)Perl(cgi)へ引数(データ)を渡す方法を教えてください。 プログラムの流れとしましては、 (1):データベースを検索&該当結果の番号をリンクで表示 (2):(1)でクリックしたリンクと対応する結果を表示 となっております。 また、セキュリティの事を考えて「POST」で送りたいと考えています。 よろしくお願いいたします。
質問日時: 2011/02/28 03:16 質問者: kk1159
ベストアンサー
3
0
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
【Perl】に関するコラム/記事
-
メダロット:第249話「Vol.249※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
日本古来の伝統工芸「金継ぎ」で修復した食器は前と同じように使えるの?
大切にしている食器が割れてしまったら、きっと誰もが「元に戻したい」と願うだろう。「教えて!goo」にも「割ってしまったお気に入りの食器を復活できる?」という質問があり、最適な方法について様々な意見が寄せら...
-
メダロット:第248話「Vol.248※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
タンス預金で旧紙幣を持ち続けるのは大丈夫?タンス預金のメリット・デメリットを紹介
今年7月、約20年ぶりに新紙幣が発行される。紙幣が変わることを改刷というが、この改刷には「タンス預金をあぶり出す目的があるのでは?」という見方をする人もいるという。「教えて!goo」にも「改刷で本当にタンス...
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
ファイルをディレクトリ分配のプロ...
-
openした後、closeしないでプログラ...
-
perlのプログラミング 部分入れ替え...
-
Perlのエラーについてご教授くださ...
-
画像が表示でnull; this.src
-
perlプログラミング 空白行削除
-
Perlで特定文字列から特定文字列ま...
-
ラズベリーパイ初心者です。 ラズパ...
-
アルファベットに付いて質問します...
-
#!/usr/bin/perlで書きだしたCGIを...
-
perlのflock関数でロックをかけたま...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□の中...
-
perlでリテラル値はメモリにどのよ...
-
perlで2次元配列をサブルーチンに...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方についての質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
openした後、closeしないでプログラ...
-
テキストファイルで提出とは?
-
INDIRECT 横に再度抽出したい
-
Perlで特定文字列から特定文字列ま...
-
perlをバージョンアップしたら、今...
-
Wallpaper Engineでおすすめの壁紙...
-
arduino の割り込み処理について
-
アルファベットに付いて質問します...
-
Strawberry Perl for Windows で Ou...
-
Perlで時間の計算
-
このファイルを開く方法で困ってい...
-
TeraPadエディターの操作方法について
-
cgiでサーバーにファイルを追加する
-
フローチャート 九九
-
LinuxにおいてのPerlのプログラムの...
-
perl 初等プログラミングについて
-
Perlのエラーについてご教授くださ...
-
こんにちは ブラケッツでプログラミ...
-
bashスクリプト
-
perlプログラミング 空白行削除
おすすめ情報