回答数
気になる
-
Perlのハッシュのリファレンスの使い方について
Perlのハッシュのリファレンスを使ってみたいと 思いましたがうまく動きませんでした。 よろしくお願い申し上げます。 ファイル(inifile.txt)からPerlで UserNameとTargetの値を hanako,11111 tarou,2222 の様に出力したいのですが。 tarou,2222 tarou,2222 と成ってしまいうまくいきません。 --inifile.txt---------- Mode=True UserName=hanako DeleteMode=True Target=11111 TouchDateMode=False Mode=True UserName=tarou DeleteMode=True Target=2222 TouchDateMode=False -------------------- --test.pl--- while($line=<DATA>) { # my $info={}; #これを入れるとTargetは入りました chomp($line); if($line=~/UserName/){ $line=~s/UserName=//; $info->{UserName}=$line; }elsif($line=~/Target/){ $line=~s/Target=//; $info->{Target}=$line; push @$infos,$info; } } foreach my $k(@$infos){ my @line2=( $k->{UserName}, $k->{Target}); print join(",",@line2)."\n"; } __END__ Mode=True UserName=hanako DeleteMode=True Target=11111 TouchDateMode=False Mode=True UserName=tarou DeleteMode=True Target=2222 TouchDateMode=False
質問日時: 2015/06/06 11:20 質問者: hakkai2
ベストアンサー
1
0
-
解決済
1
0
-
標準入出力先の検知
Perlを起動させたプログラムが不慮の死をとげるなどして、 起動時に開かれた標準入出力が、動作中に閉じられた場合、ゾンビ防止用として処理を終了させる必要があります。 これはどうやって調べたら良いのでしょうか? 現在は事故が起きた場合、 while (<STDIN>){} の処理が突然、停止せずに無限ループを開始し始めてるのだろうと思います。 いきなりCPUを大量に使い、メモリが一気に膨れ上がります。 (たまに気づいたらそうなってるので確かめるのは難しいです)。 ちなみにコマンドプロンプトから呼び出された場合は、プロンプトが死ぬ間際に確実に始末してくれてるようですが、 (100万回ループでコマンドプロンプトを起動し、即座にそれを殺すとPerlもそれに伴って全部死んだ)、 世の中には粗悪なプログラムもあるようで、この粗悪なプログラムが死んだとき、ちゃんとPerlを殺してくれないらしいっぽい時がたまにあります。
質問日時: 2015/05/22 08:30 質問者: TANUKIA
解決済
2
1
-
解決済
2
0
-
Excel2013で実行時エラー9の対処方法
Excel2013に三菱MXSheetなるアドインソフトをインストールしたところ 実行時エラー’9’(インデックスが有効範囲にありませ)が表示して終了を選択すると Excelは使用できますがアドインソフトが使用できません。 VBに詳しくないので簡単な対処方法をご存知な方教えてください。
質問日時: 2015/04/30 10:05 質問者: てっしー59
解決済
1
0
-
Perlでのファイルの扱いでつまづいております。
やりたいことは、"ファイルAを読み取り、その内容に処理を施したものをファイルBに書き込むという処理"です。 その上で、"ファイルBに書き込んだ内容を書き込みと同時に読み取り、 その上である条件にマッチした文を書き換える"といったことを実現したいです。 もともとのファイルの容量が非常に大きいので、何度もループを使うといったことはなるべく避けたいため、 ファイルBの書き込み・読み込み・書き換えを同時に行いたいのですが、 そもそもそういったことは可能なのでしょうか。 ※また、もともとのファイルの容量が非常に大きいので配列を使わず行う、 ということが前提条件としてあります。 現在のスクリプトの簡略化したものが以下となります。 open LOGFILE,"< /○○/ファイルA" || die("die"); open NEWLOG,"+< /△△/ファイルB" || die("die"); $new = <NEWLOG>; while($yomitori = <LOGFILE>){ if(ある条件1){ print NEWLOG "$kakikomi\n"; } if(ある条件2){ ファイルBの書き換えの処理 $new =~s/\n/ $kakikae\n/; print NEWLOG "$new"; } } close(NEWLOG); close(LOGFILE); 上記スクリプトで、ファイルAからファイルBへの書き込み、ファイルBの読み取りまではできておりますが、 ファイルBの書き換えは実現しておりません。 以上、お詳しい方がいらっしゃいましたら宜しくお願い致します。
質問日時: 2015/04/29 13:21 質問者: mangomelon
ベストアンサー
3
0
-
ベストアンサー
5
0
-
解決済
1
0
-
HTTPリクエストがネットワークの中からか外からかを調べたい
ウェブサイトのコンテンツの表示を、ネットワークの中からアクセスした場合と外からアクセスした場合で変えたいので、環境変数でIPを調べて振り分けようとしたところ、プロキシサーバの構成の都合なのか、中からでも外からでも同じプライベートIPが返ってきてしまいます。ホストを調べようとしたら何も返ってきませんでした。どのような解決方法があるでしょうか?
質問日時: 2015/04/22 16:29 質問者: furnace
ベストアンサー
1
0
-
解決済
1
0
-
入院部屋代金について
入院部屋代金の件で質問です。今、身内が病院の個室部屋に入院しています。病気の治療で音がうるさいので個室に、と病院から言われて個室にしました。 差額ベット代金は保険適用外で同意していたら払わなければいけないと知りました。 今回は同意している状態ですので、仕方ないかと思いますが費用が高く厳しい状況です。 何か還付等の処置はあるのでしょうか? 知っている方がいらっしゃいましたら、教えて頂きたいです。
質問日時: 2015/04/15 12:49 質問者: K-S1118
解決済
5
0
-
perl:ループのカウンタ変数の値を保持したい。
While文のループのなかにfor文でループをまわしているスクリプトなのですが、 forの中でカウンタ変数をつくり、ループ回数を計測しております。 またforの中である条件を満たした際に、lastでforを抜け、引き続きWhileのループを継続するという処理をしております。 $i=0; While(○○){ 処理1 for(××){ 処理2 $i++; if($i >=100){ 処理3 last; } } } ここで、一度for文のif文で一度forループを抜け、Whileでループをし、またforループに突入した際に、前回forループでカウントした$iの値を保持したまま、そのつづきから$iのカウンタを動作させたいのですが、$iの値はforループを抜けるとリセットしてしまいます。 このような場合、どうすれば$iの値を保持できますでしょうか。 お詳しい方、宜しくお願い致します。 ※ネストがうまく表現できず、みずらくてスミマセン。
質問日時: 2015/04/14 18:29 質問者: mangomelon
ベストアンサー
2
0
-
twitterの機能について
ある友達に 「仲の悪い友達からtwitterを監視されている」といった内容の相談を受けました そこで私がどうやって分かるのと、聞いたら 「twitterと、ある機能で分かってその人の暗号みたいなので分かる」と言っていました ずいぶん昔の呟きまで見られたとか友達は言っていました でもそういう機能ってあるんですか? 私も興味でフォローせずその子のアカウントを見ていたので少し怖いです
質問日時: 2015/04/06 19:37 質問者: やまはい
解決済
2
0
-
不要な表示を消去したい
Webサイトへログインしようと思いますが、IDを入力しようとすると、古い(変更済み)IDやメールアドレスがいくつも表示されます、消去(削除)の仕方がわかりません。全部でもよろしいの消去方法を教えてください。
質問日時: 2015/04/05 12:51 質問者: ttossk
ベストアンサー
1
0
-
エクセル 2つの表の並べ替え
2つのエクセルデータの並べ替えの方法がわかりません。 下の様なエクセルデータがあります。 A列 B列 C列 D列 E列 F列 1 A社 100 1 B社 100 2 B社 99 2 C社 99 3 C社 98 3 A社 98 4 D社 97 4 E社 97 5 E社 96 5 D社 96 データとしてはA列~C列、D列~F列がそれぞれのデータです。 B列の会社順にD列~F列を並べ替えることは可能でしょうか? (下の表の様に並べ替えたいのですが・・・) A列 B列 C列 D列 E列 F列 1 A社 100 3 A社 98 2 B社 99 1 B社 100 3 C社 98 2 C社 99 4 D社 97 5 D社 96 5 E社 96 4 E社 97 よろしくお願いします。
質問日時: 2015/04/01 17:45 質問者: danbo
ベストアンサー
1
0
-
音楽CDのコピー方法は
PCでダウンロードした楽曲を自宅で仕事しながらきいています。車でも聞こうと思いPCでコピーしようとしたら「書き込み用にステージングされたファイルがありません」との返事、それにすべての曲が1KBのサイズになっていますのでPCに取り込めません。去年はXPでコピーできたのに今年買ったWIN7(DELL中古)ではCDが認知されていないように思います。あくまでも個人ようにコピーしたいだけです、どうかご教授お願いいたします。
質問日時: 2015/03/31 10:56 質問者: bell70
ベストアンサー
2
0
-
VBA 二次元配列 ループの書き方
みなさん、VBAの2次元配列への代入をループさせる時に、1次元・2次元どちらを外側のループにしますか? というのも、下記サイトで配列へのアクセス高速化の方法(C言語です)が記載されており、興味を持ったので参考までにVBAで試してみたのですが、どうも結果が反対になるようなのです・・・ http://fast-programming.aglk.net/double-array/sample1-C.php こちらのサイト内では、1次元を外側のループにしたほうが早い、という処理結果だと思いますが、 手元では反対になりました・・・ 質問としては、 言語が異なると、配列へのアクセスもかわるのでしょうか? それとも、私の記述がサイトのものと違っているのでしょうか? 下記内容も含め、気軽に回答していただけたら幸いです。 以下、ソースと結果です。 同じ内容で、①、②の部分だけ入れ替えて計測しました。 結果はコードのさらに下です。 '------------------------------------------- Option Explicit Declare Function GetTickCount Lib "kernel32" () As Long Sub speedtest() Dim i As Long, j As Long, cnt As Long Dim st As Double, ft As Double Dim table(1 To 1000, 1 To 1000) Dim res As String res = "" For cnt = 1 To 10 st = GetTickCount() For i = 1 To 1000 For j = 1 To 1000 table(i, j) = 1 ’・・・・① ' table(j, i) = 1 ’・・・・② Next Next ft = GetTickCount() - st res = res & cnt & " : " & ft & vbCrLf Next Debug.Print res Erase table End Sub '------------------------------------------- 結果 <①> 1 : 62 2 : 63 3 : 78 4 : 62 5 : 63 6 : 78 7 : 62 8 : 62 9 : 63 10 : 78 <②> 1 : 31 2 : 47 3 : 31 4 : 31 5 : 31 6 : 47 7 : 31 8 : 31 9 : 32 10 : 46
質問日時: 2015/03/12 11:02 質問者: The_Narrow_RailWay
ベストアンサー
3
0
-
Perlで何日前か判断する計算式
たとえば、以下のように$aと$bに日付が入っています。 $aと$bは、たとえば以下のような日付が入っています。 月、日、時、分、秒は、必ず2桁で、日付と時間の間には半角スペースを含みます。 $a = "2013年02月09日 15時05分39秒"; $b = "2015年01月12日 09時32分07秒"; $aは、$bの何日前なのかを計算する方法を教えてください。 うるう年など考えているうちに分からなくなってきました。
質問日時: 2015/03/11 10:48 質問者: workpad30j
ベストアンサー
1
0
-
ベストアンサー
2
0
-
解決済
2
0
-
HELP(CGI.Perl)について
緊急事態ですが、誰か助けてください!!!!!!!!!!!!!!!!!!!! 今は掲示板を作ってますが、localhost/bbs.cgiから開くときに もちろんObject not found!こうなるんですね ちなみにまずコマンドから設定しますようにしてまして、 cd ..\..\www\home perl -c bbs.cgi の順番で設定し、C:www\home\フォルダーの中身はbbs1とbbs.cgiが入ってます。 xampp\htdocs\の中にもbbs1とbbs.cgiが入ってます。 PS:ほかの練習問題なら開けますが、こいつだとまったくわからないので、各天才様 力を貸してください。 宜しくお願い致します。
質問日時: 2015/02/16 11:14 質問者: Deanissocool
解決済
1
0
-
私道の掘削の許可
家の前の道路が私道なのですが市の上下水道市の水道管が入っています。いずれ水道工事で道路を掘削する際は道路の権利者の許可がいるのでしょうか?
質問日時: 2015/02/09 11:36 質問者: piachan3
ベストアンサー
2
0
-
法律について教えてください
法律のレポートを書くのですがテーマの意味がわかりません 「Aの土地甲は、平成26年5月1日にBへ売却され、当日移転登記なされた。 ところが、土地甲は平成6年6月1日よりCが占有し使用していた。そこで、Bは平成6年7月1日、土地甲の明渡しを要求した。この場合のBとCの優先はどのようになるか。結果とその理由を論ぜよ。」 テーマは上記です。 誰か教えてくださいお願いします。
質問日時: 2015/02/06 21:04 質問者: watabo-
解決済
3
0
-
threads を使ったマルチスレッドのエラー
threads のモジュールを使ってマルチスレッドのテストをすると下のようなエラーが 発生します。 何が原因なんでしょうか? Usage: threads->create(function, ...) at C:\testPerl\test9\test0006.pl line 11. use strict; use threads; use Data::Dumper; no strict "refs"; my $countM; for ($countM = 0; $countM < 5; $countM++){ my $test = "test".$countM; ${"thd".$countM}= threads->new(\&mtest($test)); ${"thd".$countM}->join; } print "test end.\n"; sub mtest { my $name = @_; print "$name"."\n"; threads->yield(); }
質問日時: 2015/01/21 10:41 質問者: x001
解決済
2
0
-
下記を実現したプログラムを教えていただきたく。
サーバーAからサーバーBの某ディレクトリ(ここでは/C/)にあるファイル(.tar)を30分間隔で監視する。 /C/には1日毎に過去に出たものとは違う(過去に出たファイル名とは重複はない)名前の2個の.tarファイルが置かれます。 これらのファイルは3日経過すると自動で削除される仕組みになっております。 例: aaa.tar (1/5に置かれた) bbb.tar (1/5に置かれた) ccc.tar (1/6に置かれた) ddd.tar (1/6に置かれた) eee.tar (1/7に置かれた) fff.tar (1/7に置かれた) 上記状態から1日経過した1/8は ccc.tar ddd.tar eee.tar fff.tar ggg.tar (1/8に置かれた) hhh.tar (1/8に置かれた) という状態になります。 /c/から最新の.tarをゲットするプログラムをperlで具体的に教えて(記述)いただけますでしょうか。 既にゲット済みであるものしかない場合は何もしません。 なお、プログラムはサーバーAに常時置かれているものとし、crontabで10分毎に実行されるているものとします。サーバーBにはプログラムは置きません。 perlとありますが、linux及びunixコマンドが含まれていても問題ありません。 ご助言の程、お願いします。
質問日時: 2015/01/20 11:06 質問者: torajiro123
解決済
1
0
-
条件付きソートができるエディタまたはプログラム
こんにちは。 ファイルの中身を 記号(。、<>「」など) A-Z a-z あ-ん(「は」のように濁音と半濁音のある音は、はばぱの順) ア-ン(↑と同様) 漢字(あ-ん同様) に並べ替えたいのですが、このように条件がつけられるエディタ(無料)は無いでしょうか? またはプログラム(CまたはPerl)で実装できないでしょうか? 教えていただけると助かります。 よろしくお願いします。
質問日時: 2015/01/12 09:07 質問者: sou-e9
ベストアンサー
4
0
-
pealを用いたcsvファイルの抽出
現在1.5GB程のcsvファイルを処理しています 通常通りExcelやその他csvを開くソフトで開こうとしても どうしても処理に膨大の時間がかかる一方で一部しか開けない現状です そこでpealを用いて抽出をしようとしているのですが うまく出来ないのが現状です 仮に花のデータがあったとします 花の種類としてはチューリップやあじさい10種類以上の花があり 色や花識別番号,花の数が別の列に数字として入力されています 1行目が(空白),種類,色,花識別番号,花の数,実の数,枯れた花の数 2行目が(空白),チューリップ,黄色,1,2,2,2 3行目が(空白),チューリップ,緑,2,4,2,2 ... 10行目が 3行目が(空白),あじさい,緑,2,4,2,2 … ...以下同様にあじさいなど他の花の種類も入力されているとします このとき,花の名前と色と花識別番号を指定して 花の名前と色と花識別番号,花の数,実の数,枯れた花の数のデータを抽出をしたいのですが どうしても1列目の花の種類しか指定ができず,2列目以降の色や花識別番号を指定することができません 仮にチューリップを抽出しようとする場合は while(<STDIN>){ my @line = split(/,/, $_); $cols = @line; if($cols>1) { if($line[1] eq "種類" || $line[1] eq "チューリップ"|| $line[2] eq"2" ||) { print $_; } } } 現状は…以上ののような形にて作成してます しかし,これではうまくできませんでした 分かる方いらっしゃいましたら知恵を貸してください
質問日時: 2015/01/09 20:02 質問者: hyappydesugn
解決済
4
0
-
変数が大量にありすぎて美しくない!
私は、こういうコードをよく書きます。 my $TDN = &func_hatten(8,10); my $TON = &func_hatten(2,55); my $MUR = &func_hatten(4,55); my $YJSNPI = &func_hatten(7,55); my $HOGE1 = &func_hatten(1,55); my $HOGE2 = &func_hatten(9,55); my $HOGE3 = &func_hatten(1,55); my $HOGE4 = &func_hatten(9,55); 変数に、関数の戻り値を放り込むのですが、これが30個、40個もひとつのコードに書き込むのは美しくないような気がしています。 こういう場合は、プロの世界ではどうするのが「一般的」でしょうか?
質問日時: 2015/01/07 11:20 質問者: TDN_YJSNPI
解決済
5
0
-
Perlのmyとourについて
myとourの違いが、飲み込めません。 以下、当方の環境とします。 【コード(1) ファイル名は read.pl とする】 #!/bin/perl use strict; use warnings; my @filelist = <abc*.log>; foreach my $i (0 .. $#filelist){ open(IN, "$filelist[$i]"); my @alltxt = <IN>; sub f_readlines { my $export=0; foreach my $strings(@alltxt){ $export .= $strings; } return $export; } 【コードの説明と前提】 これは、read.plを実行すると、同じディレクトリにある、「abcで始まり .logで終わるファイル」のすべてを引数として、 同じ処理を繰り返すコードです。 実行時のカレントディレクトリには、abc001.log、abc002.log、abc003.logという3つのファイルが存在します。 abc001.log には aaaaaaa という文字列が書き込まれています。 abc002.log には bbbbbbb という文字列が書き込まれています。 abc003.log には ccccccc という文字列が書き込まれています。 【コード(1)の実行結果】 $ ./read.pl aaaaaaa aaaaaaa aaaaaaa 【現状と当方の考え】 このコードの本来の目的は、存在するファイルの数だけ、その中身を順次読みだす、というものです。 ですので、コード(1)の実行結果は $ ./read.pl aaaaaaa bbbbbbb ccccccc になってくれないといけないのです。 しかし、 my @alltxt = <IN>; の行を our @alltxt = <IN>; に書き換えると、うまくいきました。 ネットを見ていると、myはスコープの範囲が限定的で、ローカルな変数のようで、 グローバル(どこでも変数として取り出せる)なものが our、というように読み取れます。 foreach の処理の中で宣言した my @alltxt ですから、 ファイルの数だけ、毎回 @alltxt の中身の値は変わるはずです。 それが、変わってくれず、初回に@alltxtに読み込んだ aaaaaaa だけが、ファイルの数だけ 出力されてしまいます。 【質問したいこと】 (1)myを使って代入した変数の中身は、同じスコープ内で作成した関数からは読みだせないのか? (2)それならば、なぜ初回のaaaaaaaは、読み出せているのか? 以上よろしくお願いします。
質問日時: 2015/01/07 11:15 質問者: TDN_YJSNPI
解決済
2
0
-
chart::gnuplot perl エラー
初めて質問します。 もしご存知の方がいたら教えてください。 ・Strawberryperl 5.16.3をインストール ・Imagemagick-6.9.0-Q16 をインストール ・Gnuplot4.6 をインストール ・Chart::Gnuplot モジュールをインストール ・OS:Windows8 64bit C:\Program Files\ImageMagick-6.9.0-Q16\PerlMagick\demo\demo.pl をコマンドラインで実行し、起動を確認。 Gnuplot、Imagemagickともに環境変数でPathはとおってます。 コマンドプロンプトで、gnuplot, wgnuplot ともに起動を確認。 以下のコードを実行したところエラーが出て頭を抱えています。 gnuplotとimagemagickのインストールがうまくいったと思ったのですがなぜか動きません。 --------------------- use strict; use warnings; use utf8; use Chart::Gnuplot; my @xdata = qw/ Apr May Jun /; my @ydata = qw/ 3145 3749 3635 /; my $filename = "test.png"; my $chart = Chart::Gnuplot->new( output => $filename, timeaxis => 'x', ); my $dataset = Chart::Gnuplot::DataSet->new( xdata => \@xdata, ydata => \@ydata, style => 'linespoints', linetype => 1, pointtype => 6, timefmt => '%b', ); $chart->plot2d($dataset); ---------------------- 以下エラー内容 convert.exe: FailedToExecuteCommand `"gswin32c.exe" -q -dQUIET -dSAFER -dBATCH - dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEV ICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r72x72" -g504x720 "-sOu tputFile=C:/Users/Mieko/AppData/Local/Temp/magick-1452Dc6vcLxxdw0R%d" "-fC:/User s/Mieko/AppData/Local/Temp/magick-1452AL8tJ_0U-Cq1" "-fC:/Users/Mieko/AppData/Lo cal/Temp/magick-1452Y727r0aGDb5H"' (指定されたファイルが見つかりません。 ) @ error/delegate.c/ExternalDelegateCommand/458. convert.exe: FailedToExecuteCommand `"gswin32c.exe" -q -dQUIET -dSAFER -dBATCH - dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEV ICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r72x72" -g504x720 "-sOu tputFile=C:/Users/Mieko/AppData/Local/Temp/magick-1452Dc6vcLxxdw0R%d" "-fC:/User s/Mieko/AppData/Local/Temp/magick-1452AL8tJ_0U-Cq1" "-fC:/Users/Mieko/AppData/Lo cal/Temp/magick-1452Y727r0aGDb5H" -c showpage' (指定されたファイルが見つかりませ ん。 ) @ error/delegate.c/ExternalDelegateCommand/458. convert.exe: Postscript delegate failed `指定されたファイルが見つかりません。 ' @ error/ps.c/ReadPSImage/941. convert.exe: no images defined `C:\Users\Mieko\AppData\Local\Temp\If7Fvb0CUD\plo t.tmp.png' @ error/convert.c/ConvertImageCommand/3210.
質問日時: 2015/01/04 14:43 質問者: Jan55
解決済
1
0
-
Perlでのファイルの読み込み
以下内容のファイルabc.csv を読み込み、1列目の文字列を指定したとき、2列目の文字列の内容を取得したいと思います。MEを指定したらMELONを取得したい。 その場合のコードを教えて下さい。 AP,APPLE OR,ORANGE ME,MELON PE,PEACH GR,GRAPE 以上、よろしくお願いします。
質問日時: 2015/01/02 10:50 質問者: okayama394
ベストアンサー
1
0
-
perlの文字列組み合わせ
perlでプログラムを作成中です。 作成したモノはうまく動かないので掲載できませんが、 どなたかお知恵を貸してください。 入力文字列に対して 1をA、2をB、3をC に置換するプログラムを作成中です。 ただし、全ての組み合わせを出力したいのです。 つまり、”213”と入力すると回答は、 B13 BA3 BAC 2A3 21C 2AC B1C と出力したいのです。 プログラムとしては、入力文字列を1つずつを配列に入れて、それぞれの変換 をかけ、1つずつ組み合わせて出力しているのですが、どうもうまくいきません。 手法は特に固執してませんので、どの様な形でも結構です。 よろしくお願いします。
質問日時: 2014/12/31 01:15 質問者: oguogu01
ベストアンサー
16
0
-
Net::SMTPでメール配信できる限界件数
今Net::SMTPを使ってメール配信するプログラムを作っています。 簡単なメルマガ配信のようなものです。 プログラムではループを使って一件、一件配信するのではなく、bccで一斉に送ろうと思っています。 その時に、bccで送ることのできるMAX件数はいくらぐらいなのでしょうか? 実際に送る件数は300件を超えることはありません。 ご教示よろしくお願いいたします。
質問日時: 2014/12/23 19:31 質問者: buffalomasa
ベストアンサー
2
0
-
MySQLに登録すると文字化け
Perlのスクリプトで、MySQLにユーザー情報を登録しているのですが、 二つのDBに登録しています。 一つ目のDBはEUC-JPで、もう一つがUTF-8のMySQLになっています。 具体的には、最初はあるCMSのユーザー登録を別のPerlスクリプトで行い正常に保存されていたのですが、今年の春頃からWordpressも使う必要があり、そちらがUTF-8のDBなのです。 英数字なら問題なく登録可能なのですが、日本語が入ると、UTF-8のDBでは文字化け等が発生して、正常に登録されませんでした。 ちなみに、Perlスクリプト自体はEUC-JPで記述・保存されているファイルなのですが、先述の通り、先のCMS側のDBがEUC-JPなので、このPerl自体をUTF8にするわけにもいかず・・・ 以下のようなソースになっています。 ------------------------------------------------------------------------ # データベースへアクセス $dbh = DBI -> connect ("DBI:mysql:$dbname:$dbhost",$dbusername,$dbpassword) or show_ErrorPage('データベースにアクセス出来ません。'); #$dbh->do("set names utf8"); #$data{'username'} = decode('utf8', $data{'username'}); #$data{'username'} = encode("shiftjis",decode("euc-jp",$data{'username'})); #$data{'username'} = encode("euc-jp",decode("utf8",$data{'username'})); #$data{'username'} = Encode::from_to($data{'username'}, 'utf8', 'euc-jp'); #utf8::decode($data{'username'}); #$data{'username'} = Encode::from_to($data{'username'},'euc-jp','utf-8'); $sth = $dbh->prepare( qq{ INSERT INTO $table2 (ID,user_login,user_pass,user_nicename) VALUES("$rows[0]", "$data{'username'}","$data{'password'}", "$data{'username'}") } ); $sth -> execute() or show_ErrorPage("データベースを実行出来ませんでした。$DBI::err ($DBI::errstr)"); $sth -> finish(); $sth2 = $dbh->prepare(qq{ SELECT ID FROM $table2 WHERE user_login = "$data{'username'}"}); $sth2 -> execute() or show_ErrorPage("データベースを実行出来ませんでした。$DBI::err ($DBI::errstr)"); @rowss = $sth2->fetchrow_array; $sth2 = $dbh->prepare( qq{ INSERT INTO $table3 (user_id,meta_key,meta_value) VALUES ("$rowss[0]","first_name",""), ("$rowss[0]","last_name",""), ("$rowss[0]","nickname","$data{'username'}"); $sth2 -> execute() or show_ErrorPage("データベースを実行出来ませんでした。$DBI::err ($DBI::errstr)"); ------------------------------------------------------------------------ 少し省いている部分もあり、数字等に間違いがあるかもしれません。 このPerlはフォームスクリプトで、$data{'username'}にユーザー名を入力してもらいます。 それを「user_login」や「user_nicename」に登録をしたいのですが、先のEUC-JPのDBでは問題ありませんが、UTF8のDBでは空白になります。 その後色々調べてみて、上記コードの#の部分を追加して試してみましたが、空白ではないものの文字化けになったり数字になって登録されてしまうようになりました。 やりたいことは、「$data{'username'}」という変数をUTF8に文字エンコードをしてWordpress側のDBに登録を行いたいのです。 その後「perl utf8 フラグ」などのキーワードを知り調べてみましたが、具体的に自分の知識では解決できずに悩んでおります。 もし宜しければご教示頂けますと幸いです。 宜しくお願い申し上げます。
質問日時: 2014/12/15 12:39 質問者: kinmugi
解決済
1
0
-
HASH(0xほげほげ)
出力が”HASH(0x197fa1c)”のような場合、どう解析してけばいいでしょうか? --------------------------------------------------------------------- #!C:\Perl\bin\perl.exe -w use strict; use Win32::OLE::OPC; #変数↓ my $items_stringP1 = "PLC0"; #OPCServer のデバイス名 my $items_stringP2 = "D"; #MELSECのデバイス名称 my $items_stringP3 = 0; #先頭アドレス my $maxcount = 1; #点数(5) #変数↑ my $opcintf = Win32::OLE::OPC->new('OPC.Automation', 'Takebishi.Dxp'); my $group = $opcintf->OPCGroups->Add('grp'); my $items = $group->OPCItems; my $items_stringP3_Min = $items_stringP3; my $count = 0; while ($count < $maxcount){ my $items_string=$items_stringP1.".".$items_stringP2.$items_stringP3; $items_stringP3 ++; $count ++; $items->AddItem($items_string, $opcintf); } print "********************"."\n"; print $items ."\n"; print "********************"."\n"; my $key; foreach ( keys %$items) { print "キー値 : $key\n"; } --------------------------------------------------------------------- 出力結果:↓ ******************** Win32::OLE::OPC::Items=HASH(0x197fa1c) ******************** Use of uninitialized value $key in concatenation (.) or string at C:\testPerl\OPC\OPC08.pl line 38. キー値 : Use of uninitialized value $key in concatenation (.) or string at C:\testPerl\OPC\OPC08.pl line 38. キー値 : Use of uninitialized value $key in concatenation (.) or string at C:\testPerl\OPC\OPC08.pl line 38. キー値 :
質問日時: 2014/11/28 17:12 質問者: x001
ベストアンサー
4
0
-
圧縮ファイルの取得
http://oshiete.goo.ne.jp/qa/8823112.html こちらで質問させていただいたように、/public_html/file.zipではなく、/file.zipの ファイルをダウンロードさせるために以下の方法を取りました。 print "Content-type: application/x-tar\n\n"; open( FH, "$filename" ); binmode FH; binmode STDOUT; print <FH>; close( FH ); この方法では、ブラウザで表示させてダウンロードできるようになったのですが、 これをperlで、wgetか、何かを使って取得したいと考えています。 ところが、wgetで試したところ、zipファイルではなく、cgiページ自体のソースの取得になってしまいました。 zipファイルを取得するにはどのようにしたらよいのでしょうか。 perlの知識があまりないので、どうしても解決できません。 宜しければ具体的に書き方を教えていただけると大変助かります。どうぞよろしくお願いいたします。
質問日時: 2014/11/18 00:27 質問者: link222
ベストアンサー
1
0
-
圧縮ファイルの出力
/publick_html/に、ホームページファイルがあります。 /publick_html/a.zip をCGIで読み出す時は、 print "Location: "./a.zip"\n\n"; でいいのですが、 /a.zip を読み出す時の方法がわかりません。可能でしょうか? お手数をおかけいたしますが、よろしくお願いいたします。
質問日時: 2014/11/12 23:08 質問者: link222
ベストアンサー
1
0
-
HTMLで表示させる記述を教えてください。
お世話になります。 すいません教えてください。 $bannerには、GIFバナーにリンクが付いている内容です。 内容としては、 <a href="http://www.homepage.com/"><img src="mihon.gif"></a> とします。 これを、 print "$banner\n"; と書くと、バナーが表示されてしまいます。 これを、ウェブ上でHTMLで<a href="http://www.homepage.com/"><img src="mihon.gif"></a>と表示させるにはどうしたらいいのでしょうか? よろしくお願い致します。
質問日時: 2014/11/12 19:47 質問者: kitaone
ベストアンサー
2
0
-
ファイルの削除
日付をファイル名とし、データ量で「-」と「数字」を付加した 2ページ目以降が作成され、日によって1~10ページ程度の htmlファイルが以下のように出来上がります。 ./hoge/20141106.html ./hoge/20141106-2.html ./hoge/20141106-3.html 以下の処理で「./hoge/20141106.html」は削除できましたが、 「-2」や「-3」以降も削除する記述をご教示お願いします。 unlink("hoge/$temp.html"); どうぞ宜しくお願いします。
質問日時: 2014/11/07 13:22 質問者: mnbvc321
ベストアンサー
3
0
-
スクリプト言語「perl」はすたれゆく言語?
WEB開発業者に委託したWEBアプリの開発言語が「perl」で 作成されたものでした。 知り合いの業者さんに聞くと、「滅び行くコード」を使っているとの事です。 まだローンチしていないサービスですが、「perl」で作られたサービスを 今後、数年間運用してゆけるのか不安に想い今回質問させて頂きました。 もし、最短3年ほどの運用に耐えられないものでしたら、ある程度のコストを かけてでも、別会社へ再委託したいと思います。 忌憚のない意見をお聞かせ下さい。
質問日時: 2014/11/05 01:35 質問者: ramancya
解決済
6
0
-
PerlでXMLのフィルタリング
いつもお世話になっております。Perl初心者です。 以下のサイトを参考に、XML::Parser::PerlSAX を使用して、XMLファイルをフィルタリングするプログラムを作成しようと考えています。 http://mkweb.bcgsc.ca/intranet/perlbook/pxml/ch05_01.htm ここで、ある要素のある属性の、異なる属性値ごとに、文字データイベントを処理する方法を変えたいのですが、どのようにすればよいでしょうか。 各種SAXイベントハンドラも、XML::Handler::Subs も考えましたが、何を使えばよいか検討がつきません。よろしくお願いします。
質問日時: 2014/11/04 20:52 質問者: cat-rice
解決済
1
0
-
与えられた配列の順にソートする方法
例えば、与えられた配列が (1, 3, 5, 7, 9, 2, 4, 6, 8, 10) だった場合に、 入力配列が (1, 2, 3, 4, 5) だったら、(1, 3, 5, 2, 4) のように並び替えた いと考えています。 下記のような方法を考えましたが、いずれもできそうにありません。 grep { @ref } @input map { grep { $_ } @ref } @input forループ等を使えば容易にできるのでしょうが、なるべく自前のコードは書き たくなく、map, grep, sort等を組み合わせてできればよりベターだと考えてい ます。 なんとか、スマートな方法でこれを実現することはできないでしょうか。
質問日時: 2014/10/21 15:24 質問者: entree
ベストアンサー
1
0
-
perlで正常に検索できない
CGI RESCUE さんの 簡易データベースでdatファイルを検索しようとしています。。 http://www.rescue.ne.jp/cgi/database/ キーワードで検索をしようとしているのですが、うまくヒットしません。 CGIは以下のようになっています。 # キーワード(フリーワード) if ($FORM{'keyword'} ne '') { if ($com5 =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$FORM{'keyword'}/i) { ; } elsif ($com4 =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$FORM{'keyword'}/i) { ; } else { next; } } $com5には「スズキ用<br>ドアトリム<br>バックミラー」と入っていたとします。 「スズキ」または「ドア」・「ドアトリム」・「トリム」と入力すると、ヒットします。 「バック」または「バックミラー」で検索するとヒットしません。 改行が悪いのかと思い、 $com5を「スズキ用ドアトリムバックミラー」に修正してみました。 同じように「スズキ」等はヒットするのですが、「バック」または「バックミラー」で検索するとヒットしません。 「バックミラー」と言う語句がヒットしないのかと思ったのですが・・・ $com5を「バックミラードアトリムスズキ用」に修正したとします。 「バック」・「バックミラー」でヒットします。 また、「ドア」・「トリム」まではヒットしますが、「スズキ」・「スズキ用」になるとヒットしなくなります。 全くヒットしなかったり、動作しないわけではないので、そもそもが間違っているとかではなく検索する部分で何か文字数制限があるような感じですが、これはどこを修正したら良いでしょうか? 他に情報を記入しないといけない物があれば指摘お願いします。
質問日時: 2014/09/25 01:42 質問者: master-3rd
解決済
6
0
-
perlからphpに変数の値を渡したい
素人質問で恐縮です。 perlからphpに変数の値を渡す事は可能でしょうか。 同一サーバー内に、/hoge/aaaa.pmと/sample/bbbb.phpがあります。 置き場所はそれぞれで特に関連性はありません。 aaaa.pm内で定義した my $data = "あいうえお"; のような変数を、 bbbb.php内で受け取って使いたいです。 jQuery.ajaxでphpとjs間で変数の受け渡しが可能なのですが、 そんなイメージでやり取りできたらいいなと思っています。 難しい話であれば諦めます。 perlもphpも素人ですが、簡単なやり取りで済みそうなら取り入れたいです。 不明点などありましたら、ご質問ください。 よろしくお願いいたします。
質問日時: 2014/09/11 17:53 質問者: Search_tmp
ベストアンサー
2
0
-
perl で googleAPIを呼び出す方法
perlプログラムにて、住所から 緯度経度を一括取得したいと考えております。 入力ファイル(住所データ リスト)1万レコード程度 千代田区○○1-1-1 港区XX2-2-2 ・・・ 出力ファイル(住所<TAB>緯度<TAB>経度) 千代田区○○1-1-1<TAB>3X.XXX<TAB>13X.XXX 港区XX2-2-2<TAB>3X.XXX<TAB>13X.XXX ・・・ GoogleAPIを使えばよいのかと思いますが、全くperlからの呼び出し方法がわかりません。 教えてください。(widowsにperlをインストールして 使っています。)
質問日時: 2014/09/11 14:38 質問者: 1204533
ベストアンサー
2
0
-
Perlで変数中のエスケープされた特殊文字を展開
Perlで、変数に既に格納されているエスケープされた特殊文字を、もとの文字に展開するには どのようにしたらよいでしょうか。 つまり、\t という値で格納されているのをタブ文字にしたり、\\ という値であれば\の一文字に するという事です。 ダブルクォートで定義すれば展開されると思いましたが、展開は変数の代入時に行われるだけで、 既に変数中にエスケープされて入っているものはダブルクォートを使い変数を囲んだりしても展開されません。 下記は簡単な例でやろうとしてる事を示したものです。 add変数に\tというタブを意味するエスケープされた特殊文字を含んでいるとして、その\tを タブとして展開し、abc defのようにさせたいのですが、abc\tdefと入ってしまいます。 $ cat unescape.pl #!/bin/perl $add = '\tdef'; #シングルクォートで代入すると、もちろんエスケープされたまま代入される #$add = "\tdef"; #ダブルクォートで代入すると代入時にタブへ展開される #$add = $ARGV[0]; #本当はAGRVからエスケープ特殊文字を含んだ文字列を取りたい。ARGVから代入すると、シングルクォートの時のようにそのまま代入される $tgt = 'abc'; print "add: " . $add , "\n"; print "before: " . $tgt . "\n"; $tgt .= "$add"; #既にエスケープされた形で代入されているものを、ダブルクォートで囲んで使っても展開されない print "after: " . $tgt . "\n"; $ perl unescape.pl add: \tdef before: abc after: abc\tdef
質問日時: 2014/08/30 14:51 質問者: stosh666
ベストアンサー
3
0
-
条件に一致した塩基配列を含むデータを抽出するには?
条件に一致した塩基配列を含むデータの抽出方法を教えて下さい。(perl) 下記のように、塩基配列(ACTTC…)と、その上に配列名(>id_000)が 数百万配列ならんだデータがあります。 (fasta形式) >id_001 CGCTGCCGGGGAACGGTCTGGTCAGGGATCTATCATGAGG CGTGGGAATTTCGCCCCGGACAGTGAGGATTTGGGTGCTT CCTTTGCTGTGATTTTAAGTTACCTCACCAAA >id_002 GCAGTCCTTCGCCTGAAGTGCAGGACGGGTAGTAACGTAG AGAGATCTTGCTTAGTTACTACTGC >id_003 ・ ・ この中から、指定した塩基配列(例:TGAAGTGCA)を含むデータを、 下記のように別名のファイルに、配列名と塩基配列を一緒に出力したいのですが、 どのようにすればよいかが、分からず困っています。 >id_002 GCAGTCCTTCGCCTGAAGTGCAGGACGGGTAGTAACGTAG AGAGATCTTGCTTAGTTACTACTGC >id_015 ATGTGAAGTGCAGTGTGTTAGT ・ ・ 「BioPerl」のSeqIOオブジェクト?を使用することで、 何とか同じ結果を出せるようにはなったのですが、 実際に、どのような処理がされているのかは、理解できていません。 今後、色々なパターンに活用できるよう、perlだけの記述では どのような記述をすればよいのか、理解したいのです。 perl初心者なので、より基本的な記述だと助かります。 よろしくお願い致します。
質問日時: 2014/08/26 23:59 質問者: go-ne
ベストアンサー
3
0
-
Windows版Perlでの行の抽出の問題
Windowsのバッチファイルで、Perlを使って特定の文字列を含む行を抽出する処理を行っているのですが、うまくいかないケースがあります。 例えば、以下の線内のようなテキストがあって、 ---------------------- 〔a 〔A ゜a ゜A ---------------------- 大文字/小文字を問わず、「〔a」を含む行を抽出し、 以下の線内のような結果を得たいとします。 ---------------------- 〔a 〔A ---------------------- 検索対象ファイルの文字コードが「Shift-JIS」で、 「print if ( /〔a/i );」という構文で行を抽出すると、 以下の結果になってしまいます。 ---------------------- 〔a 〔A ゜a ゜A ---------------------- 「print if ( /〔a/ );」なら以下の結果になってしまいます。 ---------------------- 〔a ---------------------- 検索対象ファイルの文字コードを「UTF-8」にし、 「print if ( /〔a/ );」という構文で、 「〔a」を含む行を抽出しようとすると、何も行が抽出されません。 他のコマンドでの大文字/小文字問わない「〔a」を含む行の抽出は、 findstrでは得たい結果が得られ、 grep、AWKでは、Perl同様、「゜a」を含む行が抽出されてしまいます。 しかし、私が行いたい処理は、数百~数千程度の単語が書かれた単語のリストがあり、そのリストをスクリプト形式に置換して行を検索するので、スクリプトファイルに対応していないfindstrコマンドでは不便なのです。 上記の問題の原因が分かる方がおられましたら、お教え頂けないでしょうか。
質問日時: 2014/08/26 14:16 質問者: kon77
ベストアンサー
6
0
-
ファイル操作について
例えば1つのディレクトリに10万個の画像があった場合に、同じディレクトリ内にperlで新しい画像を作ったり削除したりすると、処理速度が遅くなってしまいます。(作成や削除に時間がかかったりする) 違うディレクトリではスムーズに画像を作成したり、削除したりできるのですが、大量のファイルがあった場合は遅くなってしまうようです。 perlでファイルを作ったり削除するのに、ファイル数が多いからという理由で速度が遅くなるものでしょうか。 また、何か対策をご存知であれば教えていただけると嬉しく思います。 よろしくお願いします。
質問日時: 2014/08/22 00:54 質問者: hana43
解決済
3
0
-
更新記録CGIで「前へ」「次へ」の記事を出す方法
更新記録CGI(perl)を利用して、それを改造したいと思っています。 記事は1つだけ表示して、記事下に「←次へ」「前へ→」のようなリンクを作って前後に移動したいです。 素人考えで以下のようにしました。 $no =5; (現在の記事NO。数字が入ります) $new_no = $no--; $old_no = $no++; print "<a href=\"news.cgi?vno=$new_no\">「←次へ」</a>\n"; print "<a href=\"news.cgi?vno=$old_no\">「前へ→」</a>\n"; しかしこれだと、2つの問題が発生します。 1.最新記事・最古の記事の次または前ページが存在しないのに行ってしまう。 2.何らかの理由で記事を消した場合でもそこに行ってしまう。 この2点を回避するにはどうしたら良いでしょうか? $no =5; open(IN,"$logfile") || &error("Open Error : $logfile"); while (<IN>) { ($no,$year1,$month1,$day1,$name,$tail1,$W1,$H1,$item1,$item2,$item3,$item4,$item5,$host) = split(/<>/); <<<--- どうにかして、この記事の次記事があるかを判別する --->>> if($new_no){ print "<a href=\"news.cgi?vno=$new_no\">「←次へ」</a>\n"; }else{ print "<font color=#aaaaaa>「←次へ」</font>\n"; } <<<--- どうにかして、この記事の前記事があるかを判別する --->>> if($old_no){ print "<a href=\"news.cgi?vno=$old_no\">「前へ→」</a>\n"; }else{ print "<font color=#aaaaaa>「前へ→」</font>\n"; } このようにしたいのですが、方法を教えてください。
質問日時: 2014/08/21 11:12 質問者: master-3rd
解決済
4
0
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
【Perl】に関するコラム/記事
-
タンス預金で旧紙幣を持ち続けるのは大丈夫?タンス預金のメリット・デメリットを紹介
今年7月、約20年ぶりに新紙幣が発行される。紙幣が変わることを改刷というが、この改刷には「タンス預金をあぶり出す目的があるのでは?」という見方をする人もいるという。「教えて!goo」にも「改刷で本当にタンス...
-
投資詐欺の手口や被害に遭わないためのポイント、被害後の対応策を弁護士が解説
新NISAが始まって間もなく半年が経過する。政府の旗振りの元、預貯金大国から脱却し、資産運用立国に向けた滑り出しは順調のようで、それはNISAの利用状況(2023年4月から2024年4月)を見ても明らかだ。 ・NISA口座...
-
メダロット:第247話「Vol.247※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
都内23区の火葬料金が6月からまた値上げ…(5万→7.5万→8万超→9万)なぜ?
都内23区には火葬場が合計9箇所あり、それらが区民の火葬のほぼ全てを支えているのだが、そのうちの6箇所(町屋斎場、四ツ木斎場、桐ケ谷斎場、代々幡斎場、落合斎場、堀ノ内斎場斎場)が6月から9万円に値上げをする...
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
Strawberry Perl for Windows で Ou...
-
perlプログラミング 空白行削除
-
TeraPadエディターの操作方法について
-
bashスクリプト
-
INDIRECT 横に再度抽出したい
-
Perl ある特定の文字にある数値を1...
-
perlの正規表現などを用いたテキス...
-
Perlで時間の計算
-
積分計算の答えが合いません・・・
-
LinuxにおいてのPerlのプログラムの...
-
配列へのリファレンスへのリファレ...
-
perlで自動ログインをしたいが、方...
-
Windows版のPerlについて
-
Perl 正規表現
-
フローチャート 九九
-
アルファベットに付いて質問します...
-
#!/usr/bin/perlで書きだしたCGIを...
-
Perlのエラーについてご教授くださ...
-
perlのflock関数でロックをかけたま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
openした後、closeしないでプログラ...
-
perlをバージョンアップしたら、今...
-
アルファベットに付いて質問します...
-
Perl の外部モジュールの利用方法
-
Strawberry Perl for Windows で Ou...
-
Perlのエラーについてご教授くださ...
-
perlプログラミング 空白行削除
-
INDIRECT 横に再度抽出したい
-
Perlで時間の計算
-
Wallpaper Engineでおすすめの壁紙...
-
bashスクリプト
-
perlでリテラル値はメモリにどのよ...
-
perlのプログラミング 部分入れ替え...
-
Perlで特定文字列から特定文字列ま...
-
perl LWPでURLにアクセスした時にデ...
-
perlで2次元配列をサブルーチンに...
-
perlのrequireの動き方についての質問
-
ファイルアイコンの左下に緑の□の中...
-
C言語の問題について
おすすめ情報