トップページ⇒php
1001コメント296KB

Perlコーディング初心者質問スレ Part 58

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/08/06(水) 22:54:32ID:???
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

お勧めサイトは >2 以降

前スレ http://pc11.2ch.net/test/read.cgi/php/1203935151/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0655nobodyさん2009/01/21(水) 07:48:32ID:???
>>653
my $hoge2 = *{"${class}::sub1"};
理由はエラーメッセージ読め。
0656nobodyさん2009/01/21(水) 09:03:09ID:???
出社前に

my $hoge2 = *{"$class\::sub1"};
0657nobodyさん2009/01/21(水) 10:38:00ID:dhsSLEKy
utf8の文字が半角か全角かを判別するにはどのようにしたらよいのでしょうか?
0658nobodyさん2009/01/21(水) 10:43:42ID:???
あんぱっく すりゃわかるさ
0659nobodyさん2009/01/21(水) 12:20:19ID:???
>>657
正規表現なら、\p{ASCII}でマッチさせるとか。
0660nobodyさん2009/01/21(水) 16:59:05ID:???
ActivePerlで起動中のアプリケーションを終了させる事はできますか?
06616602009/01/21(水) 17:03:30ID:???
やりたい事は起動中のアプリケーションの設定ファイルを
書き換えて、そのアプリを再起動させたいのです。
0662nobodyさん2009/01/21(水) 17:33:53ID:???
Windows であれば、Win32API を扱えるモジュールがあるので、SendMessage を指定アプリケーションに投げる方法が取れるかと思います。
06636602009/01/21(水) 17:48:12ID:???
検索結果から簡単に見つかると思ったら甘かった…。

>>662
検索キーワードありがとうございます。
0664nobodyさん2009/01/22(木) 09:37:23ID:???
勉強の為にメールフォームを書いてみました。
掲示板に改造しようと思っているのですが、
さすがに素のまま設置するのはスパム投稿で酷い目に会いそうな気がします。
スパム投稿対策にはどういうのを施せばいいのか良くわかりません。
モダンなスパム対策にはどういうのがあるのでしょうか?
良ければ参考になるようなものをご教示お願いします。
0665nobodyさん2009/01/22(木) 10:21:48ID:???
画像認証
ssl
0666nobodyさん2009/01/22(木) 10:31:08ID:???
モダンなんて言ってる時点でアホだろ
0667nobodyさん2009/01/22(木) 10:57:51ID:???
ぐぐれ
0668nobodyさん2009/01/23(金) 08:02:36ID:???
ぐぐれ(笑)
0669nobodyさん2009/01/23(金) 13:40:01ID:???
これを読めば、モダンなPerlが書ける

モダンPerl入門
http://www.amazon.co.jp/dp/4798119172/
0670nobodyさん2009/01/23(金) 15:30:04ID:???
発売前の本ですよw
0671nobodyさん2009/01/23(金) 15:50:35ID:???
perlでモダン焼きを作れますか?
0672nobodyさん2009/01/23(金) 16:25:33ID:???
モダンモダン言いすぎてカスタマーサポートに飛ばされるやつとかいるから気をつけろよ
0673nobodyさん2009/01/25(日) 14:28:30ID:???
おれはこのスレで一番モボだと言われた男
0674nobodyさん2009/01/26(月) 12:57:03ID:???

 、        ヽ
 |ヽ ト、  ト、 ト、 、.`、
/|l. l. | |l l | | l |l.| |l. l
/' j/ ノ|ル'/レ〃j/l |
-‐7" ヾー---┐|_.j
 ̄   ./゙ニ,ニF、'' l _ヽ
::   ,.,. |ヽ 」9L.` K }.|
    l'  """  l ) /
  h、,.ヘ.      レ'/
          レ′
 r.二二.)     /  
  ≡≡    ,イ
.       / !
\   /  ├、
::::::` ̄´   /  !ハ.
0675nobodyさん2009/01/26(月) 18:15:16ID:???
画像を取得→加工→表示させるプログラムを作ろうと思っています。
ググってみたんですが、ローカルの画像を加工して保存する方法ばかりで、
他のウェブサイトから画像を取得→加工→表示する方法がわかりません。

参考になるサイトでもいいので、どなたか教えてもらえませんか?
0676nobodyさん2009/01/26(月) 18:22:23ID:???
(1)他のウェブサイトから画像を取得
(2)加工→表示
0677nobodyさん2009/01/26(月) 18:31:56ID:???
要はHTMLがレンダリングされたページを画像として取得したいってことでおk?
0678nobodyさん2009/01/26(月) 18:35:41ID:???
>>677
いえ、例えば、
http://〜.jpg、500*500
の画像を取得し、250*250にして表示したいと思っています。
0679nobodyさん2009/01/26(月) 18:39:29ID:???
LWPとImagemagickでぐぐれ
0680nobodyさん2009/01/26(月) 18:50:54ID:???
取得する方法と加工する方法と表示する方法がそれぞれわかれば組み合わせるだけだよ。
どれがわからんの?
0681nobodyさん2009/01/26(月) 18:55:35ID:???
取得はLWPのget()でいいと思うんですけど・・・
加工と、表示の仕方がわかりません。
0682nobodyさん2009/01/26(月) 18:56:56ID:???
getした画像はどこにあるんだよ馬鹿っ!!
0683nobodyさん2009/01/26(月) 18:57:01ID:???
たしかこのスレでも似たの無かったっけ?

LWP で取得したイメージが内部でイメージに変換できなくて困ってるってやつで自分が回答した記憶がある

BlobToImage でググってみれば、取得から表示までのサンプルが出てくると思う
0684nobodyさん2009/01/26(月) 18:58:45ID:???
>>677と>>678とは一緒に仕事したくない
0685nobodyさん2009/01/26(月) 19:01:36ID:???
まずは加工か。
GDもしくはImageMagickあたりかな
0686nobodyさん2009/01/26(月) 19:01:58ID:???
>>683とは?
0687nobodyさん2009/01/26(月) 19:16:58ID:???
>>683
このスレのリンクがいっぱい出てきたくらいで、参考になりそうなところはありませんでした・・・
0688nobodyさん2009/01/26(月) 19:33:13ID:???
なに、宿題?それとも仕事?
0689nobodyさん2009/01/26(月) 19:38:47ID:???
いえ、趣味です。
携帯用の2chビューア作ってて、画像リンクをサムネイル表示するオプションをつけたいと思いまして。
htmlのimgタグのサイズ変更だとうまくいかないんで・・・
0690nobodyさん2009/01/26(月) 20:07:04ID:???
みなさんありがとうございました!
サンプルを見つけてちゃんと動いたので、これを改造して使いたいと思います。
0691nobodyさん2009/01/27(火) 16:25:45ID:???
xhtml1.1のページをAtomフィードにして出力したいのですけども、
どういったモジュールを使うのがお薦めでしょうか?
0692nobodyさん2009/01/27(火) 22:59:06ID:???
>>691
つ 自作モジュール
0693nobodyさん2009/01/28(水) 12:09:29ID:???
XML::RPC
XML::Parser
XML::Atom
XML::Feed
etc
0694sage2009/01/29(木) 22:24:25ID:kdy/+vR+
複数のプログラムを一度に起動したいのですが
execを使えばいいのか、systemを使えばいいのかすらわかりません。
exec("notepad");
system ('start "" "C:\WINDOWS\system32\notepad.exe"');
一つのプログラムであれば上記のような方法で可能なのですが。
どなたかご教授願います。
0695nobodyさん2009/01/29(木) 22:33:22ID:???
systemを3つ並べれば3つ起動しね?
06966942009/01/29(木) 22:41:07ID:???
system("notepad");
system("notepad");
system("notepad");

こうすると1つ目の終了まで待機するようなのですが、
待機しないで3つ起動するにはどうすればいいでしょうか。
0697nobodyさん2009/01/29(木) 22:49:17ID:???
旧式な人間だから、fork & exec使うかな。
モダンな方法はあるのだろうか。
0698nobodyさん2009/01/29(木) 23:01:27ID:???
>>696
自分で>>694に書いてるけど
system("start", "notepad"); #これを3つ起動でしょ
06996942009/01/30(金) 00:09:29ID:???
>>698
上手くいきました!
試行方法が未熟でした…。
ありがとうございました。
0700nobodyさん2009/01/30(金) 00:30:25ID:???
モダン(笑)
0701nobodyさん2009/01/30(金) 02:30:39ID:????PLT(54324)
for (0..2) { system(1, "notepad"); }
0702nobodyさん2009/01/30(金) 03:11:15ID:???
モダン(笑)
0703nobodyさん2009/01/30(金) 08:17:29ID:???
本気でnotepadかよ!
たとえで出してたのかと思った。
0704nobodyさん2009/01/30(金) 08:21:33ID:???
ところで、「モダン(笑)」って何かの流行?

0705nobodyさん2009/01/30(金) 17:44:58ID:???
いや全然
0706nobodyさん2009/01/30(金) 21:40:46ID:???
聴きなれない言葉を聴いてちょっとハイになってるだけでしょう
小学生によくあるようなアレ
0707nobodyさん2009/01/31(土) 02:50:44ID:???
モダンモダン言いすぎてカスタマーサポートに飛ばされるやつとかいるから気をつけろよ
0708nobodyさん2009/01/31(土) 05:36:32ID:???
モダン(笑)
0709nobodyさん2009/01/31(土) 05:59:42ID:???
モダン(笑)
0710nobodyさん2009/01/31(土) 10:12:00ID:???
ぼくの方がモダンだからぼくの方が偉い
0711nobodyさん2009/01/31(土) 10:41:36ID:???
モダン(笑)
0712nobodyさん2009/01/31(土) 17:00:29ID:???
パッケージ名に変数は使えますか?
package $name
とか
0713nobodyさん2009/01/31(土) 17:30:56ID:???
パッケージが変数とかwww
0714nobodyさん2009/01/31(土) 20:28:20ID:???
>>712
単刀直入すぎ。
それは出来ないけど、Sub::InstallとかClass::MOPとか、その辺使ってみるとか。

標準的なクラス型のオブジェクト指向では使わないから、そこは考えて使ってね。
0715nobodyさん2009/01/31(土) 20:50:36ID:IExMyMgz
プログラムが美味く動かないのですがどうやら原因はサブルーチンが作動していないようです。
以下はプログラムの一部。

#サブルーチンの呼び出し
&aaa();
exit(0);
# サブルーチンの宣言と定義
sub aaa{
print "あいうえお";
}

0716nobodyさん2009/01/31(土) 20:55:59ID:???
エラー内容をよく読むべし!
0717nobodyさん2009/01/31(土) 20:58:57ID:IExMyMgz
直接サーバーで動かしているのでエラーは戻ってきません。
0718nobodyさん2009/01/31(土) 21:10:13ID:???
>>717
まあ、まずは落ち着いて、君のPCにPerlを入れないか。
0719nobodyさん2009/01/31(土) 21:16:46ID:???
・どういう風に直接サーバで動かしているのか
・どういう風にサブルーチンが作動していないことを確認したのか
まさかこのプログラムをa.cgiとかにしてCGIで実行しているんじゃないよな・・・?
0720nobodyさん2009/01/31(土) 21:18:18ID:???
っとここはWebProg板だからその可能性が高そうだ
0721nobodyさん2009/01/31(土) 21:25:24ID:IExMyMgz
>>719
そうです。
0722nobodyさん2009/01/31(土) 21:47:12ID:???
>>721
初心者っぽいから言っておくが
サブルーチンの動作を省略せずにきちんと書いてみ
そしたらそのプログラムに何が足りないかすぐわかるはずだ。
0723nobodyさん2009/01/31(土) 22:22:12ID:???
初心者こそ初めは省略せずに丁寧にプログラムを書くべきだと思うんだが
今時の人はそういう事をしないのカネ
0724nobodyさん2009/01/31(土) 22:58:38ID:???
考えられるのは

- #!/usr/bin/perl のようなperlのパスを書いてない
- 実行権限がない
- web?? なら print "Content-type:text/html \n\n"; 的な記述がない

とかとか
0725nobodyさん2009/01/31(土) 23:50:05ID:???
モダン(笑)
0726nobodyさん2009/01/31(土) 23:51:42ID:???
つかfatalsToBrowswerでいんじゃね
0727nobodyさん2009/02/01(日) 00:24:54ID:???
単純にルーチンから引き渡せてないだけだろwww
0728nobodyさん2009/02/01(日) 00:36:42ID:???
>>727違うだろw

>>724のどれかじゃね?
エラー内容を書いてないし自分で解決するんだろ
0729nobodyさん2009/02/01(日) 02:37:45ID:8RIm5Wux
Python始まったな
Python 3が後方互換性を捨ててでも求めたもの
ttp://www.atmarkit.co.jp/fcoding/articles/python3/01/python301a.html
0730nobodyさん2009/02/01(日) 03:03:40ID:???
pythonは流行らないよ
ttp://d.hatena.ne.jp/seiunsky/20080417/1208454191
0731nobodyさん2009/02/01(日) 04:13:30ID:???
>>730
日本では流行らないだろw
世界的にはすでに流行ってる
0732nobodyさん2009/02/01(日) 04:55:13ID:???
ttp://ziddy.japan.zdnet.com/qa4086953.html
この状況と同じです。OSはXP、perlはv5.10.0です。
>ppm-shell
>install DBI
>install DBD-mysql
でパッケージが無くインストールできません。
>ppm でppmのGUI立ち上げてリポジトリ追加後にDBI,DBDと検索するとたくさん出てきます。
DBDで検索したのからDBD-mysqlPPだけインストールしました。
DBIで検索したのからよくわからないので大量ですが全部入れておきました。
○DBDはDBD-mysqlPPだけでよいですか?DBD-mysqlというのはなかったのでDBD-mysqlPP入れておきました。
○DBIはどれが必要なのでしょうか?
まだサンプルプログラムが動かない状態です。よろしくお願いします。
07337322009/02/01(日) 05:20:39ID:???
>ppm install DBI
Downloading ActiveState Package Repository packlist...not modified
No missing packages to install

>ppm install DBD-mysql
Downloading ActiveState Package Repository packlist...not modified
ppm install failed: Can't find any package that provides DBD-mysql

エラー内容貼らせていただきました。
DBIはインストールされているっぽいですか。
DBD-mysqlPPだけ入れればいいんでしょうか。。。
07347322009/02/01(日) 05:44:24ID:???
ttp://cpan.uwinnipeg.ca/PPMPackages/10xx/
ここに書いてあるコマンド直接書いてみたらできました。
>ppm install http://cpan.uwinnipeg.ca/PPMPackages/10xx/DBD-mysql.ppd
サンプルプログラムも動きました。

リポジトリに追加したときURLが間違っていたので
DBD-mysqlが無かったのかもしれません。
0735nobodyさん2009/02/02(月) 10:41:30ID:WfkTEh9p
すみませんvistaにmod_perlを導入したいのですが
ソースコードしか手に入らず困り果ててます
コンパイル済みのmod_perlはどこで入手できますでしょうか?
0736nobodyさん2009/02/02(月) 11:11:06ID:???
ggrks
0737nobodyさん2009/02/02(月) 11:45:22ID:???
>>736
シネカス
0738nobodyさん2009/02/02(月) 11:46:24ID:???
>>735
ActivePerlなら、ppmを使ってUwinnipegのリポジトリから取れるよ。
http://perl.apache.org/docs/2.0/os/win32/install.html
0739nobodyさん2009/02/02(月) 12:10:46ID:???
ググればすぐわかる内容をわざわざ掲示板で聞くとか頭悪過ぎ
0740nobodyさん2009/02/02(月) 12:45:35ID:???
テンプレにこれでも入れとくか
http://www.y2sunlight.com/ground/?ActivePerl5.8%2F6.mod_perl
0741nobodyさん2009/02/02(月) 14:11:48ID:???
> ググればすぐわかる内容をわざわざ掲示板で聞くとか頭悪過ぎ

ググって正しい内容に到達できるといいけどね。
古かったり、間違った情報だったりすることって多々あるよね。
ブログ書いてると分かると思うけど、pod とか他人からのコピペだったり、
試行錯誤してることを載せること多いよね。
その分野に疎かったら、古かったり、間違った情報だとしてもわかんないよね。
だから、知ってる人に質問したほうがいいと思うんだ。
0742nobodyさん2009/02/02(月) 14:33:05ID:qwoAnWRh
print "content-type:text/html\n\n";の\nはなぜ2つ書かないとcgiとして動作しないのでしょうか?
0743nobodyさん2009/02/02(月) 14:39:45ID:???
HTTP ヘッダが空行をヘッダとデータの区切りとして定義されてるから
0744nobodyさん2009/02/02(月) 14:48:06ID:???
そういう意味があったんですね
\nがひとつだと500エラーになったのはそういうこだったんですね
ありがとうございました
0745nobodyさん2009/02/02(月) 16:35:52ID:P7XLmGHa
何らかの原因でbuf1という変数が空になってしまうのですが

$buf1 = "$a[0]","&","$a[1]";

↑とりあえずこの表記は正しいでしょうか?
0746nobodyさん2009/02/02(月) 16:47:09ID:???
$buf1 = $a[0] . "&" . $a[1];
0747nobodyさん2009/02/02(月) 17:03:56ID:???
ありがとう^^
0748nobodyさん2009/02/02(月) 18:11:38ID:???
$buf1 = join("&", @a); とかじゃないかもしかして
0749nobodyさん2009/02/02(月) 18:24:35ID:???
Lingua::JA::kana というモジュールを使って
ローマ字をひらがなに変換しようとしています。
コマンドラインだと

$ perl -M'Encode' -M'Lingua::JA::Kana' -w -e 'print romaji2hiragana(@ARGV);' hogehoge(エンター)
Wide character in print at -e line 1.
ほげほげ

と表示されるのですが、

use strict;
use warnings;
use Encode;
use Lingua::JA::kana;
print romaji2hiragana(@ARGV);

という内容のスクリプトファイルをコマンドラインから実行すると

$ perl /Users/anon/Desktop/test.pl hogehoge(エンター)
Undefined subroutine &main::romaji2hiragana called at /Users/anon/Desktop/test.pl line 5.

と表示されてしまいます。
なぜスクリプトファイルの方は "Undefined subroutine" と
なってしまうのでしょうか?
0750nobodyさん2009/02/02(月) 18:41:51ID:???
>>749
Lingua::JA::"k"ana は書き込み時のミスか?
0751nobodyさん2009/02/02(月) 18:45:54ID:???
>>746
先生!動きません。
>>748
&で分割した処理の逆をやりたいのです。
0752nobodyさん2009/02/02(月) 19:05:10ID:???
print encode("shiftjis", romaji2hiragana("aka"));

で Win コンソールででけたよ
0753nobodyさん2009/02/02(月) 19:13:08ID:???
>>751
my @a = split(/&/, $xxx); したものなら >>748 で結合できる。
小出しにせずに、周辺のコードも晒すといいよ。

変数の様子が意味不明の時は、手当たり次第 Data::Dumper に食わせてみるといいよ。

use Data::Dumper;
warn Dumper($str);
warn Dumper(\@array);
warn Dumper(\%hash);
0754nobodyさん2009/02/02(月) 19:13:52ID:???
普通に

my @a = qw( a1 a2 );
my $buf1 = $a[0] . '&' . $a[1];
print "\nbuf1 = $buf1\n";

でできないか?
0755nobodyさん2009/02/02(月) 19:34:09ID:???
>>478さんの言うとおりにします。
しかし動かない理由も気になります周辺のコードです。

open(IN, "a.txt") or die;
read(IN, $a, -s IN);
my @pairs = split(/,/,$a);

@data = split(/&/,$pairs[0]);

if (data[1] == 12){@b = "3&@b";
$baf1 = $a[0] ."&". $a[1] ."&". $a[2]";

ちなみにこれです。これが動きません


■ このスレッドは過去ログ倉庫に格納されています