Perlコーディング初心者質問スレ Part 58
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2008/08/06(水) 22:54:32ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >2 以降
前スレ http://pc11.2ch.net/test/read.cgi/php/1203935151/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0002nobodyさん
2008/08/06(水) 22:56:09ID:???[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: ttp://www.site-cooler.com/kwl/perl/
[本]
リャマ: ttp://www.oreilly.co.jp/books/4873111269/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/
[オンラインマニュアル] (追加)
最新のドキュメント: ttp://search.cpan.org/dist/perl-5.8.8/
perl5.8.xのドキュメント(一部): ttp://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: ttp://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: ttp://www.cpan.jp/search.cgi
perldoc.jp: ttp://www.perldoc.jp/
Perldoc.com: ttp://www.perldoc.com/
0003nobodyさん
2008/08/06(水) 22:56:31ID:???[モジュール]
CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perlの小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
ttp://www.pure.ne.jp/~learner/program/Perl_unicode.html
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0005nobodyさん
2008/08/07(木) 07:15:27ID:1CE8PFPTある特定のページでは途中で切れてしまいます。
データサイズも大きくないのに、
なぜ途中で止まってしまうのかがわかりません。。
#!/usr/local/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
my $url = 'http://human7.2ch.net/wmotenai/subback.html';
my $browser = LWP::UserAgent->new;
my $resp = $browser->get($url, 'User-Agent' => 'test');
print $resp->content;
0006nobodyさん
2008/08/07(木) 11:10:29ID:qpI1q2Eiこのような暗号化するサイトをつくりたいです。
暗号化に使用するスクリプトは知り合いに作ってもらいました
sub enc_string{
my ($key, $string) = @_;
my @map = (('A' ... 'Z'), ('a' ... 'z'), ('0' ... '9'), '+', '&');
my @key = unpack('C*', $key);
my $str = '';
my @x = map { int(rand(200)) } (0 ... 2);
@key = map {$x[$_] ^ $key[$_]} (0 ... 2);
while($string ne ''){
my $n = substr($string, 0, 3, '');
my @n = unpack('C3', $n);
map{$n[$_] ^= ($key[$_])} (0 ... 2);
@key = unpack('C3', $n);
@key = map {$x[$_] ^ $key[$_]} (0 ... 2);
my $a = $n[0] >> 2;
my $b = (($n[0] & 3) << 4) | ($n[1] >> 4);
my $c = (($n[1] & 15) << 2) | ($n[2] >> 6);
my $d = $n[2] & 63;
$str .= $map[$a] . $map[$b] . $map[$c] . $map[$d];
}
my $a = $x[0] >> 2;
my $b = (($x[0] & 3) << 4) | ($x[1] >> 4);
my $c = (($x[1] & 15) << 2) | ($x[2] >> 6);
my $d = $x[2] & 63;
return $str.'<>'.$map[$a].$map[$b].$map[$c].$map[$d];
}
これをcgiとして上記のサイトのように出力するようにするにはどうすればいいでしょうか?
0007nobodyさん
2008/08/07(木) 11:45:30ID:???0009nobodyさん
2008/08/07(木) 12:17:13ID:???0010nobodyさん
2008/08/07(木) 12:19:33ID:???なのでこちらでお願いしているんです
0011nobodyさん
2008/08/07(木) 12:23:08ID:???0012nobodyさん
2008/08/07(木) 12:31:41ID:???最低限の知識ぐらいは身につけてから来た方がいい。
0016nobodyさん
2008/08/07(木) 13:03:10ID:???0017nobodyさん
2008/08/07(木) 13:17:02ID:???今度だけだよ。次からは自分で探してね。
# アドバイスが欲しい場合:
★三 【 スクリプト改造工房 PART 9 】 ★三
http://pc11.2ch.net/test/read.cgi/php/1143834740/
# 誰かにやってもらいたい場合:
【 スクリプト改造依頼スレ 】(丸投げ) part7
http://pc11.2ch.net/test/read.cgi/php/1216419170/
0020nobodyさん
2008/08/07(木) 16:26:22ID:???初期値を設定するにはどうすればいいのでしょうか。
CGI.pmでセレクトメニューを作ったときのようにdefault値を指定できる仕組みがあると便利なのですが。
現状では一つ一つにifで
<select name="test">
<option value="test_1" [% IF test_1 %]selected="selected"[% END %]>test1<option>
<option value="test_2" [% IF test_2 %]selected="selected"[% END %]>test2<option>
<option value="test_3" [% IF test_3 %]selected="selected"[% END %]>test3<option>
</select>
こんな感じでやってるのですが、他に効率のいい方法があったら教えてください。
0023nobodyさん
2008/08/07(木) 18:43:16ID:???selectする要素がDBに入ってるから、
ループでまわして、同じ値だったらselectedするようにしてる。
0024nobodyさん
2008/08/07(木) 21:07:08ID:???[% FILTER fillinform fdat => stash %]
<select name="test">
<option value="test_1">test1<option>
<option value="test_2">test2<option>
<option value="test_3">test3<option>
</select>
[% END %]
00255
2008/08/07(木) 21:41:11ID:1CE8PFPTprint "content=" . $resp->content . "\n"; #これだとHTML全部表示される
#print $resp->content; #これだと途中で止まる
ちなみに、
>>19
is_success=1
status_lilne=200 OK
でした。(^^
>>21
出力結果がよくわからず。。まだまだ勉強が足りないようです。。
0026nobodyさん
2008/08/07(木) 22:25:18ID:???0027nobodyさん
2008/08/08(金) 02:06:15ID:???print Jcode->new(chr $c,"jis")->utf8,"\n";
print Jcode->new("あ","jis")->utf8, "\n";
異なる結果が表示されるのですが、同じ結果はどうすれば得られますか。
0028nobodyさん
2008/08/08(金) 02:32:39ID:???0030nobodyさん
2008/08/08(金) 02:36:27ID:???003120
2008/08/08(金) 11:08:08ID:???こんなものがあったのですね。とても便利そうなので使ってみます。
>>23
ふむふむ
>>24
具体的な使い方ありがとうございます!
みなさんどうもありがとうございました。
0032nobodyさん
2008/08/08(金) 16:57:50ID:???use Jcode;
my $c = 9250; #JISコードの"あ"
print Jcode->new(pack('A3n', "\e\$B", $c), "jis")->utf8, "\n";
print Jcode->new('あ',"jis")->utf8, "\n";
# ぶっちゃけJISではencoding使わないとスクリプトなんて書いてられないんだが、
# 言及してないところを見ると、後釣りなんだろうか。
0033nobodyさん
2008/08/08(金) 17:45:59ID:???本気でエスケープシーケンスにまみれてたら元質問が出てこない。
00355
2008/08/08(金) 23:12:59ID:6d/Auy3aWindows Vista 、Active Perl v5.6.1、コマンドプロンプト
でHTMLをGETしてprint出力させたところ、下記結果になりますた。。
print $hoge ; #一定サイズで止まる
print "Content=" . $hoge ; #全部出力される
003835=5
2008/08/10(日) 12:35:43ID:FnBuPKsd↓こんな感じ
c:\Perl>gethtml03.pl
〜省略〜
は意識してないんですが、これで(野村
c:\Perl>
下記のようにファイル出力させると正常に</html>まで書き込んでいました。
open(OUT, ">gethtml.txt");
print OUT $resp->content ;
close(OUT);
Perlの問題ではなくて、コマンドプロンプトが勝手にセッションを切ってしまうのかもしれません。。
0039nobodyさん
2008/08/10(日) 13:54:06ID:e4jqjZel#!C/:perl/bin/perl
として指定していますがこれをを
#!usr/bin/perl
で動かしたいのですが良い方法はありますか?
0040nobodyさん
2008/08/10(日) 14:25:28ID:???試してからもう一度聞きに来てくださいな。
あ、あたち、……待ってゆかやぁ!
# ちなみにそれ、どっちもたぶん間違っているけれど釣りなのか typo なのか。
0041nobodyさん
2008/08/10(日) 15:25:56ID:???まあ、何も書いてなくても動くけど。
004236
2008/08/11(月) 21:00:27ID:???何度やっても、ぴったり再現するようなら、以下の原因が考えられます。
- Windows Vista 搭載 cmd.exe(?) の新機能
- Windows Vista の新機能
- Perl もしくは Module のバージョンが古臭い
当方は以下の環境で相変わらず再現せず:
Perl 5.10.0, (nyacus.exe|cmd.exe|command.com), Windows XP Professional SP2
0043nobodyさん
2008/08/13(水) 12:07:37ID:???どのように記述すればいいでしょうか?
$str = 'XXX,YYY';
$aa = $ARGV[0]; # (.+),(.+)
$bb = $ARGV[1]; # $2-$1
$str =~ s/$aa/$bb/; # YYY-XXX になるようにしたい
0044nobodyさん
2008/08/13(水) 12:41:40ID:???ただ$1-$2は"で囲わないと、変数展開しないと思う。
0045nobodyさん
2008/08/13(水) 23:35:35ID:???そのまま $1-$2 に置換されます。
できないのでしょうか。
0047nobodyさん
2008/08/14(木) 04:07:34ID:???忘れずに。
0048nobodyさん
2008/08/14(木) 09:24:20ID:???eを使わなくても変数展開するが、その場合は一度しかしない。
$2-$1だと引き算が行われるので、"で囲って変数展開が行われるようにする。
0049nobodyさん
2008/08/14(木) 15:40:50ID:???最終的にこうしました。
$str = 'XXX,YYY';
$aa = $ARGV[0]; # (.+),(.+)
$bb = $ARGV[1]; # $2-$1
$bb = "\"".$bb."\"" if($bb =~ /[\$]\d/);
$str =~ s/$aa/$bb/ee; # YYY-XXX になるようにしたい
0050nobodyさん
2008/08/16(土) 16:45:37ID:oiXxzTPYMIME::Parserを使用してメールを処理したいのですが
my $parser = MIME::Parser->new();
$parser->parse(\*STDIN);
のparseを呼び出した時点で処理がとまってしまいました。
無限ループではまったかのようにとまっています。
falseも返ってきません。
ネットを調べても、上記の状態でとまったという事例を
発見することができませんでした。
原因として考えられることはどのようなことでしょうか?
0051nobodyさん
2008/08/16(土) 16:54:48ID:???0052nobodyさん
2008/08/16(土) 17:02:50ID:oiXxzTPYwhile(<STDIN>){
$buf .= $_;
}
my $entity = $parser->parse($buf);
ありがとうございます。
この形でよろしいでしょうか?
上の形にしても現状の解決はできませんでした。
新しくわかったこととして、メールに画像を添付した際に
とまってしまっていることがわかりました。
ファイル添付をしていないメールならば
$parser->parse()を抜けてきているようです。
0053nobodyさん
2008/08/16(土) 17:46:56ID:???0054nobodyさん
2008/08/16(土) 18:02:12ID:oiXxzTPY正直今ひとつわかっていないと思います。
どこか、大前提のようなものが抜けているのでしょうか?
0055nobodyさん
2008/08/16(土) 23:56:28ID:???qmail 使ったことないんでわからんけど。
0056nobodyさん
2008/08/17(日) 01:13:43ID:???0057nobodyさん
2008/08/17(日) 03:07:34ID:???.qmail 使わずに添付ファイルの受信は出来てるのかとか、色々問題を切り分けてみてよ
あと止まる直前か直後の文字コードを、正常に受信出来たときのコードで憶測してみるとか
まだまだやることはあるんじゃないの?
0058nobodyさん
2008/08/17(日) 04:50:10ID:???そのファイルが展開できるかどうかをチェックしてみればいいんじゃないのか。
あと、エラートラップは、きっちり書いて。
0059nobodyさん
2008/08/18(月) 10:53:12ID:???質問者が特定場所以降のドロップっ意味で止まってるって書いてるならやる意義は十分ありますが…
0060nobodyさん
2008/08/18(月) 11:46:03ID:???0061nobodyさん
2008/08/18(月) 12:32:24ID:???0063nobodyさん
2008/08/19(火) 18:06:14ID:???項目を数字で指定しない方向で同等の処理は出来ないでしょうか。
お願いします。
' VB+oo4o
OraDynaset = OraDataBase.DbCreateDynaset(SQL_STR, 0&)
aaa = OraDynaset.Fields("AAA").Value
# Perl+oo4o
my OraDynaset = OraDataBase.DbCreateDynaset(SQL_STR, 0)
$aaa = $OraDynaset->Fields('AAA')->{Value};
結果:Can't call method "Fields" on an undefined value at ***.
$aaa = $OraDynaset->{Fields('AAA')}->{Value};
結果:Undefined subroutine &main::Fields called at ****
0064nobodyさん
2008/08/19(火) 18:26:43ID:???0065nobodyさん
2008/08/19(火) 23:26:21ID:???自覚はないのかも知れないけれど、なんだかすごく混乱しているみたい。
VB, Oracle, oo4o, OLE, Perl のそれぞれに分けて把握を整理したほうがよさげ。
0066nobodyさん
2008/08/20(水) 10:57:24ID:???エラーメッセージから分かるのは、Fieldsをメソッド/サブルーチンとして呼び出そうとしている。
それを踏まえてPerlの文法をもう少し勉強してみます。
0068nobodyさん
2008/08/20(水) 23:50:12ID:???文字列で、"20080820"となっている
前日(昨日)を求めるコーディングを
教えてください。
0069nobodyさん
2008/08/20(水) 23:54:12ID:???0071nobodyさん
2008/08/21(木) 00:34:14ID:???0072nobodyさん
2008/08/21(木) 01:40:28ID:???0073nobodyさん
2008/08/21(木) 01:50:41ID:???0074nobodyさん
2008/08/21(木) 02:22:39ID:???とか
use Date::Manip qw(UnixDate DateCalc Date_Init);
とか。
0075nobodyさん
2008/08/21(木) 02:56:24ID:???日付の話がでたついでに質問なのですが、Nヶ月後とかNヶ月前ってどうやって計算してる?
(というよりどう定義してるかの問題?)
Q1. 1月31日の一ヶ月後
Q2. 2月28日の一ヵ月後
Q3. 3月31日の一ヶ月前
Q4. 3月31日の一ヵ月後
0076nobodyさん
2008/08/21(木) 03:46:07ID:???ttp://www5d.biglobe.ne.jp/~Jusl/TomoLaw/KikanKeisan.html
007763
2008/08/21(木) 08:04:49ID:???";"は当たり障りある部分を消すときに一緒に消えたのでしょう。
一応、文字コードが変な様ですが、通ることは通るようになりました。
項目指定にリテラル数字/リテラル文字列を指定すると変なままですけど。
my $OraSession = Win32::OLE->new ("OracleInProcServer.XOraSession");
my $OraDatabase = $OraSession->DBOpenDatabase("orcl", "scott/tiger", 0);
my $oDyna = $OraDatabase->CreateDynaset("SELECT * FROM ****", 0);
my %FN;
my $i;
for ($i = 0; $i < $oDyna->Fields->Count ; $i++){
$FN{$i} = $oDyna->FieldName($i);
}
while(!($oDyna->{EOF})) {
for ($i = 0; $i < $oDyna->Fields->Count ; $i++){
print $oDyna->Fields($FN{$i})->Value, "\n";
}
print "\n";
$oDyna->MoveNext;
}
0078nobodyさん
2008/08/21(木) 09:39:20ID:VetJG0Vxprint $OraDynaset->Fields('ABCD')->Value."\n";
は普通に通ります。
0079nobodyさん
2008/08/23(土) 09:30:39ID:???ギャル文字の正規化モジュールとか知りませんか。ギャル文字への変換じゃなく、ギャル文字からの変換。
手作業で対応表を組もうとかも考えましたが、無謀すぎた……orz
0080nobodyさん
2008/08/23(土) 10:04:39ID:???今様々なWEBページからHTMLを取得して、それをShiftJISに変換しているのですが、
JcodeでもEncodeでも一部のページで文字化けが起こって困っています。
文字化けを極力起こしたくない場合、どのような変換方法がいいのでしょうか?
0081nobodyさん
2008/08/23(土) 10:17:15ID:???元ページ自体が文字化けしてるかどうか目視することも一考
0082nobodyさん
2008/08/24(日) 04:03:35ID:???decoded_contentが一番楽っぽい。
gzip/deflateにも対応してるみたいだし。
$r->is_success or die $r->status_line;
my $content = $r->decoded_content();
defined $content or ...;
utf8で出てくるから、あとは適当に変換で。
008380
2008/08/25(月) 20:08:13ID:???文字化けするページは一部文字化けしている場合が多いですね。
もともとそのページに問題があるのかも知れません。
>>82
そんな方法あったんですね、初めて知りました…。
近いうちに試してみようと思います。
返信ありがとうございました。
0084nobodyさん
2008/08/27(水) 11:11:12ID:???自分で内容を追加していくといった物ではなくて、既存のHTMLにチェックボックスがあり、
そこにチェックを入れ、「保存する」ボタンを押したら、ログファイルにチェックされているか否かを保存し、
更新後にチェックされている状態が保存されている物を作りたいのですが、このような処理はどのようにしてやれば良いのでしょうか?
最終的には自分でToDoの内容も掲示板みたく追加出来るようにしたいです。
0085nobodyさん
2008/08/27(水) 12:03:04ID:???0086nobodyさん
2008/08/27(水) 15:59:09ID:???外部のものなら、パーサーで解析してチェックボックスを割り込ませて出力、とかいうことになるんじゃないか。
この作業が一番めんどくさい。
0087nobodyさん
2008/08/27(水) 19:52:46ID:???紹介されていたんだけど、これって現役?
0088nobodyさん
2008/08/27(水) 20:00:37ID:???0089nobodyさん
2008/08/27(水) 20:35:39ID:???0090nobodyさん
2008/08/27(水) 20:45:09ID:???0091nobodyさん
2008/08/27(水) 21:02:23ID:???0092nobodyさん
2008/08/27(水) 21:25:25ID:???お好みでCGI::MinimalでもCGI::Simpleでも。
0093nobodyさん
2008/08/27(水) 21:49:46ID:???車輪の再発明?
0094nobodyさん
2008/08/27(水) 22:34:42ID:???トレーニングのための再発明にゃあ手頃な車輪だろ。
よそに迷惑かけないようにさえすりゃ誰も止めねえよ。
0095nobodyさん
2008/08/28(木) 10:53:23ID:???CGIやCGI::Liteやフレームワークに丸投げした方がいい、と昔Perlスレで言われた
0096nobodyさん
2008/08/28(木) 16:12:26ID:???CGI::Minimalと
CGI::Simpleとで、
どれを使えばいいの?
0097nobodyさん
2008/08/28(木) 16:28:55ID:???0098nobodyさん
2008/08/28(木) 20:19:56ID:???実際のサービスの為に作りこむのはアンチパターンの"高慢"。
0099nobodyさん
2008/08/28(木) 22:31:17ID:oELFSwbaPHPで言うところのupload_max_filesizeやpost_max_sizeは、
Perlではどこら辺を設定すればいいんですか?
0101nobodyさん
2008/08/28(木) 23:59:40ID:???CGI.pmが簡単、は例からわかるんだが、
汚れた変なデータ渡されても誤動作しないのかとか
デフォルト設定をちゃんと覚えないととかちょっとだけ不安。
0102nobodyさん
2008/08/29(金) 08:08:31ID:???何時の話だ
0103nobodyさん
2008/08/29(金) 10:08:36ID:???0104nobodyさん
2008/08/29(金) 15:26:13ID:???マルチパートのパースがむつかしい、、、というかめんどくさい。。
while(<STDIN>)
ってしたら、大きい添付ファイルきたらいちどメモリに確保する分つらいしな。。
readでちょっとずつ読むしかないのか、、
0105nobodyさん
2008/08/29(金) 15:27:54ID:???0106nobodyさん
2008/08/29(金) 15:45:42ID:???0107nobodyさん
2008/08/30(土) 09:40:00ID:???0108nobodyさん
2008/08/31(日) 18:20:50ID:???Perl は汎用言語として開発されています。
そのためその言語仕様は CGI (をはじめとする Web プログラミング) など他の周辺仕様と直行しており、その点で PHP とは事情が異なります。
Web アプリケーション開発のために生まれたのが PHP で、
Web アプリケーション開発にも流用されているのが Perl であると言うこともできます。
Perl は CGI で利用できる言語として広く普及しました。
その過程で生まれたノウハウを抽出したものが CGI::* などのモジュール群です。
幸い CGI.pm は pure Perl ですから、この機会に目を通してみてはいかがでしょう。
その上で、あなたが必要とする品質に達していないと判断したなら、それは新しい車輪を作るに充分な理由だと思います。
イイモノができたら CPAN で公開してください。使わせてもらいます。
0109nobodyさん
2008/09/02(火) 08:28:05ID:guk/QrQq今スコアについて作成しているのですが
どうにも反映されません、何が違うのでしょうか
Flashのスコア登録コードは
stop ();
CGIFile = "test.cgi?" + Math.floor(Math.random() * 1000);
mySaveVars = new LoadVars();
mySaveVars.score = score;
mySaveVars.playername = playername;
myLoadVars = new LoadVars();
myLoadVars.onLoad = function (success)
{
var _loc1;
for (var _loc1 = 0; _loc1 < RANK_MAX; ++_loc1)
{
ranker[_loc1].playername = myLoadVars["name" + _loc1];
ranker[_loc1].score = myLoadVars["score" + _loc1];
} // end of for
gotoAndStop("display");
};
mySaveVars.sendAndLoad(CGIFile, myLoadVars, "POST");
0110nobodyさん
2008/09/02(火) 08:30:11ID:guk/QrQquse CGI 'Vars';
my %in = CGI::Vars;
open LOG, '+<score.dat';
my %rank = map { chomp; split /\t/, $_, 2; } <LOG>;
$rank{$in{score}} = $in{name} if $rank{$in{score}} < $in{name};
my @rank = sort { $rank{$b} <=> $rank{$a} } keys %rank;
truncate LOG, 0;
seek LOG, 0, 0;
print LOG map { "$_\t$rank{$_}\n" } @rank[0..9];
print "Content-type: text/plain\n\n";
print map { "score$_=$rank[$_]&name$_=$rank{$rank[$_]}&" } 0..9;
test.cgiにはtop10の空欄表示はされますが
登録する画面にはいかずそのまま終わってしまいます
score.datも空欄ですが、動いているようです
0111nobodyさん
2008/09/02(火) 15:54:14ID:XutqN0xSログに場所や原因を特定できる情報を吐くために、
callerで大元の呼び出し元からのツリーを吐く方法を探してます。
力技でやれば、階層確認用の変数を作って
mainから関数を呼ぶたびに1ずつインクリメントしていってエラー関数でforで
階層確認用の変数の分だけ回せば出来るとは思うんですが、
sub err {
my ($sadd) = @_;
my $s;
for ($i=MAXVALUE; $i <= 0; $i--) {
$s .= caller($i).' / ';
}
print STDERR $sadd."\n".$s;
}
手動でインクリメントすることなく、上記のMAXVALUEを取得する方法はありませんでしょうか。
0112nobodyさん
2008/09/02(火) 17:08:26ID:62/De0KZ$hoge=gethostbyaddr(pack('C4',split/\./,$ENV{'REMOTE_ADDR'}),2)||$ENV{'REMOTE_ADDR'};
以下の場合だと、$hogeは空になります。
$hoge=gethostbyaddr(pack('C4',split/\./,$ENV{'REMOTE_ADDR'}),2)or$ENV{'REMOTE_ADDR'};
後者が空になってしまうのは何故ですか?
0113nobodyさん
2008/09/02(火) 17:20:16ID:???($hoge=gethostbyaddr(pack('C4',split/\./,$ENV{'REMOTE_ADDR'}),2)) or$ENV{'REMOTE_ADDR'};
0115nobodyさん
2008/09/02(火) 17:37:04ID:62/De0KZそういうものなんですね。ありがとうございました。
0116nobodyさん
2008/09/02(火) 17:44:36ID:???confessも読んでいくと
my $pkg = caller(++$i);
unless(defined($pkg)) {
みたいなことをしてループでネストの深さ調べてるから
インクリメントしていると言える。
見かけ上自分でインクリメントしなけりゃいいならこれで
いいんだろうけどな。
0117nobodyさん
2008/09/02(火) 17:52:27ID:IiWNBMxF0118nobodyさん
2008/09/02(火) 17:55:37ID:???ありがとうございます
> my $pkg = caller(++$i);
> unless(defined($pkg)) {
こんなこと出来るんですね…
すみません調べが足りず、callerに対して無効な範囲の引数を渡したら
落ちちゃうもんだとおもってました。
目的としては、余計な引数のリレーとかグローバル変数とか使わずに
エラーサブだけでツリー生成することでしたので、下記のような感じでテストしてみます。
うまく行ったら〆報告します。
sub err {
my ($sadd) = @_;
my @return;
my $i = 0;
while(1) {
my $s = caller($i);
if (defined $s) {
@return .= $s;
} else {
last;
}
$i++;
}
print STDERR $sadd."\n".(join ' / ', reverse @return);
}
0119nobodyさん
2008/09/02(火) 17:58:31ID:IiWNBMxF0120nobodyさん
2008/09/02(火) 18:34:27ID:???抜粋ですが、下記でツリーというかパンくずリストというかそれっぽいものが出力できました。
ただ、ファイル名はrequireした元ではなく全て実行ファイル名になるようで、
あんまり意味無かったかも…
>my $i = 0;
>while (($package,
> $filename,
> $line,
> $subroutine,
> $hasargs,
> $wantarray,
> $evaltext,
> $is_require,
> $hints,
> $bitmask) = caller($i++)) {
> push @aTree, "$filename\($line\) $subroutine";
>}
>my $sRev = join ' => ', (reverse @aTree);
>print STDERR $sRev
以上、ありがとうございましたー
>>118は無限ループっぽいのでご注意下さい
0121nobodyさん
2008/09/02(火) 18:54:50ID:???0122nobodyさん
2008/09/02(火) 19:06:01ID:???なんで…?
と思ってよくよく考えたら、confessそのまま使えばよかったのか…orz
すみませんなにか焦りのままにわけのわからない事をしてしまったようで…orz
0125nobodyさん
2008/09/03(水) 02:01:14ID:???何の初心者かと言えばまず間違いなく Perl の初心者さんで、
バイオなんとかについては専門 (恐らく受講中) ということであれば、
# (この程度の情報はよこしてもよかろう、ケチんぼめ)
「バイオインフォマティクスのためのPerl入門」(ISBN4-87311-103-X)
を買え。
0126125
2008/09/03(水) 02:16:22ID:???これを機会にPerlをイチから少々嗜んでおこうと考えたなら
(または「バイオ(以下略)」のPerlに歯が立たなかったら)、
次の書籍から入るのが王道よん。
「初めてのPerl 第3版」(ISBN4-87311-126-9)
いずれにせよこの手の応用なら計算のためのモデル化が必須で、
モデル化するためには当該分野の知識が必要、と。
数式にまで落し込んで示せば誰かコード例を書いてくれるかもね。
しかしそこまでできれば自分で書けちゃうよなあ。w
0127nobodyさん
2008/09/03(水) 02:46:19ID:???習い事板にでも書いて。
0128nobodyさん
2008/09/03(水) 02:49:05ID:???結城さんのだよ。
ほかのはむずかしすぎて(説明が下手すぎて)わかんないとおもう。
0129nobodyさん
2008/09/03(水) 02:57:19ID:???ここをこう直せばこう行ける、みたいな経験則で。
0130nobodyさん
2008/09/03(水) 05:15:42ID:???ラクダ本やPerldocなど読んで、基本をしっかりマスターすることが大切。
文法エラーが出なければ、なんでも良い訳じゃない事を知って欲しい。
特にファイルオープンのエラー処理を省く奴。
0132nobodyさん
2008/09/03(水) 09:20:14ID:???0133nobodyさん
2008/09/03(水) 09:29:36ID:???頭の悪すぎる奴というのであってる。
0134nobodyさん
2008/09/03(水) 11:33:27ID:???そして素人に最初から完璧な探し方を要求する
0135nobodyさん
2008/09/03(水) 11:37:02ID:???0136nobodyさん
2008/09/03(水) 11:59:41ID:???連発する新人が来て、一週間で営業に飛ばしたのを思い出した。
0137nobodyさん
2008/09/03(水) 13:16:42ID:???0138nobodyさん
2008/09/03(水) 13:22:49ID:???0139nobodyさん
2008/09/03(水) 13:40:17ID:???の($$\@)って何っていう名前だっけ?
0141nobodyさん
2008/09/03(水) 14:20:13ID:???凄いな
0142nobodyさん
2008/09/03(水) 22:23:50ID:???>>140 はほぼパーフェクトな回答。
そもそもが知りもしないことを、余計な格好をつけるから
そういう間の抜けたことになる。
0143nobodyさん
2008/09/05(金) 06:53:30ID:SLk/ayWJ配列として扱えるように置換したいんですが、どう書けばいいですか?
0144nobodyさん
2008/09/05(金) 07:00:40ID:???0146nobodyさん
2008/09/05(金) 11:12:25ID:SLk/ayWJ大したCGIではないのでぶっちゃけどんな方法でもいいのですが、
後学のためにもこの方法でお願いしたいです。
0147nobodyさん
2008/09/05(金) 12:29:59ID:hg/3f6aEコピーする場合と、
OSのコピーコマンドを
使ってコピーする場合は
どっちが高速ですか?
また、常に上書きされるのでしょうか?
0150nobodyさん
2008/09/05(金) 13:12:50ID:r9aXZuUNコピーする場合と、
OSのコピーコマンドを
使ってコピーする場合は
どっちが高速ですか?
また、常に上書きされるのでしょうか?
自分でマニュアルを読むのが面倒なので
代わりに読んで説明してください。
0152nobodyさん
2008/09/05(金) 13:37:01ID:???適当なファイルについて試したところでは
% time cp hoge.log hg
cp hoge.log hg 0.00s user 0.21s system 8% cpu 2.529 total
% time perl -MFile::Copy -e 'copy "hoge.log","hg2"'
perl -MFile::Copy -e 'copy "hoge.log","hg2"' 0.02s user 0.29s system 12% cpu 2.532 total
これだけみるとcpの方がはやいかな?
気になる人は何回も条件変えたりしてやってみると良いよ。
0158nobodyさん
2008/09/06(土) 11:31:36ID:???やっぱ便利?
0159nobodyさん
2008/09/06(土) 12:35:13ID:???コードとデザインの分離が不完全になりかねないが。
0160nobodyさん
2008/09/06(土) 21:45:27ID:???今までデザイン担当がやってた部分を俺がやらなきゃならんってことか(笑)
0161nobodyさん
2008/09/06(土) 23:42:48ID:???0162nobodyさん
2008/09/08(月) 09:09:39ID:???ハハハ…… 無理だろうなあ。
0163nobodyさん
2008/09/08(月) 14:05:27ID:???また支払いに遅れたら暴力団や政治結社とかから取り立てが来るんでしょうか?
無知でクレクレですいません(>_<)詳しい方、宜しくお願いしますm(_ _)m
0164nobodyさん
2008/09/08(月) 14:29:16ID:wRo8Y2Dqまた延滞した場合は督促状が届き、それを忘れると社会的に葬られます。
気をつけましょう。
0165nobodyさん
2008/09/09(火) 13:23:57ID:???h1();
<H1>が生成
h1('aaa');
<H1>aaa</H1>が生成
では
</H1>だけ生成するにはどうすればいいのでしょうか?
0166nobodyさん
2008/09/09(火) 13:53:27ID:???In this case, you can use the form start_Itag_name and end_Itag_name, as in:
print start_h1,'Level 1 Header',end_h1;
0167nobodyさん
2008/09/09(火) 13:55:39ID:???0168nobodyさん
2008/09/09(火) 14:35:58ID:???ちなみにどんな語句で検索したんですか?
0169nobodyさん
2008/09/09(火) 15:26:06ID:???最低でもマニュアル読んで質問しろや、ぼけ。
0171nobodyさん
2008/09/09(火) 16:04:57ID:???もう、プログラミングやめた方がいいよ。
0173nobodyさん
2008/09/09(火) 16:11:52ID:???0175nobodyさん
2008/09/09(火) 16:16:31ID:???答える答えないは別として。
0176nobodyさん
2008/09/09(火) 16:21:23ID:???start_xxx
end_xxx
ってパターン知らないと、調べるにもその先が広がらないよね
0177nobodyさん
2008/09/09(火) 16:28:12ID:???初心者が手にするような入門書には書いてないのかもしれないな。
初心者は入門書がマニュアルだから。
入門書に書いてなければ、即質問。
0178nobodyさん
2008/09/09(火) 20:55:13ID:???perldoc perl
モジュールのマニュアルを見るには perldoc の引数にモジュール名を与えて実行します:
perldoc CGI
# 今回のケースはこのコマンドで表示される内容のうち、"SPECIAL FORMS FOR IMPORTING HTML-TAG FUNCTIONS" という節に載っています。
perldoc の使い方も perldoc で調べることができます:
perldoc perldoc
以上、初心者のための perldoc 入門でした。よろしくご活用下さい。
0179nobodyさん
2008/09/09(火) 21:25:32ID:???態度でかいな。
0180nobodyさん
2008/09/09(火) 23:58:37ID:???0181nobodyさん
2008/09/10(水) 09:33:06ID:???'perldoc' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
Pathが通ってなかったOracle10g付属Perl
Pathを通すと動くようになった
0182nobodyさん
2008/09/10(水) 13:01:51ID:???0183nobodyさん
2008/09/10(水) 13:10:53ID:Ln4PKjnAってやって出てくる1ページ目にものすっごいヒントがあるじゃないw
NAME
CGI - Simple Common Gateway Interface Class
SYNOPSIS
# CGI script that creates a fill-out form
# and echoes back its values.
use CGI qw/:standard/;
print header,
start_html('A Simple Example'),
h1('A Simple Example'),
start_form,
"What's your name? ",textfield('name'),p,
"What's the combination?", p,
checkbox_group(-name=>'words',
-values=>['eenie','meenie','minie','moe'],
-defaults=>['eenie','minie']), p,
"What's your favorite color? ",
popup_menu(-name=>'color',
-values=>['red','green','blue','chartreuse']),p,
submit,
end_form,
hr;
0184nobodyさん
2008/09/10(水) 13:30:20ID:???0185nobodyさん
2008/09/10(水) 14:12:03ID:???CGI - 簡単なCGI(Common Gateway Interface)クラス
http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod
0186nobodyさん
2008/09/10(水) 16:22:39ID:???直前に出ているOracle Server入ってる環境もOracleのPerlと競合して入れられない。
(入れられはするが環境変数が競合して可笑しな動きをする)
コマンドが使えるかどうか、使えなければ、PATHを通ってなければ通すとかすれば使えるから、そっちをやると良い
0187nobodyさん
2008/09/10(水) 16:32:00ID:???mysqlで勉強してます。文字コードはsjisです。
1、「’、<」などの通常の特殊文字のエスケープ
2、sjisどうしても使う場合は「SELECT 〜$str 〜」のSQL文の中で使う
すべての文字列をEncode::from_to($str, "sjis","sjis");
毎回これ何個もずらりと書くの大変です。
mysqli_real_escape_string()関数も同様に毎回ですよね。
質問です。
・1だけの処理で簡単に終わらせることは可能でしょうか?
可能でしたらどの文字をどうしたらよいのか知りたいです。
・2をすれば対策になっていますか?
よろしくお願いします。
0188nobodyさん
2008/09/10(水) 16:37:22ID:???1.
プレースホルダ使えよ
2.
SJISは知らん。多分はまり道なので避けられれば避けたほうがいいような
気はするが避けようがないなら....まあ、頑張れ。
0189nobodyさん
2008/09/10(水) 17:07:20ID:???0190nobodyさん
2008/09/10(水) 21:12:56ID:???それを行うライブラリを書いたらいいんじゃないかな。
それがたとえ既存の車輪だとしても、勉強になるし便利になるし安全…かどうかは中身次第だけど、少なくともメインプログラムの行数が減ればバグも減る。
0191nobodyさん
2008/09/11(木) 03:45:37ID:???http://www.ipa.go.jp/security/vuln/websecurity.html
昔から疑問に思ってたんだけど、
プレースホルダ使った方が楽で確実なのに、
エスケープで通す利点ってあるの?
0192187
2008/09/11(木) 04:05:18ID:???IPAの解説書にプレースホルダか一つずつエスケープ処理する
対策があるみたいですね。
意識しないでquote()使っていたので大丈夫のようです。
今度からは、プレースホルダも使ってみたいと思います。
ありがとうございました。
0193nobodyさん
2008/09/11(木) 12:02:32ID:???0194nobodyさん
2008/09/12(金) 06:22:07ID:???where ... in (...) ってやつ?
my @fields = ( ,,, );
my $query = sprintf("select ... from Table where ... in(%s)", join(',', ('?')x@fields));
my $sth = $dbh->prepare($query) or die $dbh->errstr;
$sth->execute(@fields);
こんな感じで特に問題ないと思う。
0195nobodyさん
2008/09/13(土) 14:59:35ID:D0b2LLILhoge.cgi?key=ab+cd で「ab+cd」という値として受け取りたいのです。
CGI::Lite, CGI::Simple, CGI::Minimum などは、皆「ab cd」と空白に変換してしまいます。
0196nobodyさん
2008/09/13(土) 15:06:54ID:???0197nobodyさん
2008/09/13(土) 15:08:31ID:???0198nobodyさん
2008/09/13(土) 17:12:54ID:???" "はブラウザが"+"にエンコードして送ってくる。
> hoge.cgi?key=ab+cd で「ab+cd」
として受け取りたいなら、RFC書いて、各ブラウザを改良させて、モジュールを修正する。
まぁ、頑張ってくれ。
0199nobodyさん
2008/09/13(土) 17:21:39ID:???「+」をその文字のままで扱いたかったら、>>196の言う通り
送り側が%2Bとエスケープしてからサーバーに送らんといかん。
どうしても「+」(送り側は半角スペースのつもり)のままで受け取りたいなら、
モジュールの中身を改造するか、自前で引数受け取り、デコード用の処理を書くかするしかないんじゃないの。
0200nobodyさん
2008/09/13(土) 21:31:17ID:???逃げ道はあるけど、うまい方法だと思われても困る。
0201nobodyさん
2008/09/14(日) 20:04:01ID:???dddから始まる行を、置換で削除したいです
(下記の場合dddeeeが該当)
aaa
bbb
ccc
dddeee
fff
検索:ddd[a-z]
置換:\n
だとうまく置換されません
なぜ??
0202nobodyさん
2008/09/14(日) 20:11:49ID:???0203nobodyさん
2008/09/14(日) 20:46:53ID:???0204nobodyさん
2008/09/14(日) 21:26:37ID:???Perl でやってるんだったら「こう書いてるけどうまく行かない」も書きましょう。
<$fh> =~ s/ddd[a-z]/\n/g; # うまく行かない
0205201
2008/09/14(日) 21:26:47ID:???解決できて嬉しいです。
0206nobodyさん
2008/09/18(木) 23:04:37ID:???if (open(FH, ">data.bat")) {
print FH $data;
close(FH);
↑CGIを使用しページを見ているユーザーに入力を求め、<入力したメールアドレス><入力したPW>に代入?させてファイルに書き出したいのですがいい方法ってありますか?
0207nobodyさん
2008/09/18(木) 23:19:12ID:???2. そのフォームを受け取って、ファイルに書き出すスクリプトを作る。
0208nobodyさん
2008/09/18(木) 23:52:53ID:???0209nobodyさん
2008/09/19(金) 13:28:02ID:J2CRWlwv亀レスですが。
あんまりスマートじゃないけど、こんなんでどうですか? fasta形式のファイル読み込むようになってます。
BioPerl使った方がいいのかもしれませんが、私はよく知らないので・・・ テキトーに参考になさってくだされば幸いです。
ところで、ついでに質問させていただきます。 15行目の$1を22行目のprintの中に入れると、 Use of uninitialized valueのエラーが出るのですが、 これはなぜでしょうか?
お分かりになる方いらっしゃいましたら教えて、いただけますでしょうか?
>sequence1 NIDA
atgaccaccg aaacaaccgg acaccggcac acagctgacg cgaccgatcc ctacctgcgg 60
cgcgcgttgc gggaggtagc ggacgggctc aaggtcgggc gcttaccggc ccgcgtcgtc 120
>sequence2 MONA
gcttagccct aaacctcagt agttaaaaca acaaaactac tcgccagaat actacaagca 60
acagcttgaa actcaaagga cttggcggtg cttcacatcc ccctagagga gcctgtccca 120
したにつづく
0210209
2008/09/19(金) 13:28:56ID:J2CRWlwv1 #!/usr/bin/perl
2 use strict;
4 use warnings;
6 open (my $fh,'<','fastafile.txt') or die "cannot open file\n";
8 $/ = '>'; #セパレーターを\nから変更
9
10 my @sequences = <$fh>;
11 shift @sequences; #要素数0は空だから削除
12
13 for (@sequences) {
14 s/^(.+)\n//; print ">$1\n"; s/\d|>//g;
17 #カウントとマッチしたところを大文字に
18 tr/ATGCU/atgcu/;
19 my $TAG = $_ =~ s/tag/TAG/igm;
20 my $TGA = $_ =~ s/tga/TGA/igm;
21 my $TAA = $_ =~ s/taa/TAA/igm;
22 print "$_ UAA:$TAG\n UAG:$TGA\n TAA:$TAA\n\n\n";
23 }
0211nobodyさん
2008/09/19(金) 13:53:37ID:???0212209
2008/09/19(金) 13:56:08ID:J2CRWlwvすいません。
改行制限に引っ掛かったので、14行目にまとめてました。
14 s/^(.+)\n//;
15 print ">$1\n";
16 s/\d|>//g;
0213nobodyさん
2008/09/19(金) 17:07:37ID:???$1 は、次に正規表現が呼ばれた際にクリアされる。当然、15行目の $1 は 16 行目には
クリアされているので、22 行目で print 出来るわけない。のはいいとして、、、
- 普通 fasta format には塩基数表示なんか無い。同様にスペース区切りも入らない。
もしあなたがそれを常用しているのなら、今すぐ止めた方が良い。
それは「 fasta format の様なもの」にしか過ぎない。
- さらにスクリプトの方では、塩基配列中の空白、改行が残る為 「 TA A 」などのケースを逃す。
(空白は通常の fasta format を想定してるならそれでも良いがそうなると s/\d|>//g; が謎。
改行の除去忘れは重大)
- local せずに $/ ='>' するのはスクリプトが大きくなった時、混乱を招くのでお勧めしない。
- frame 無関係に終止コドンの数を数えてどーすんの?
以下、引数に multi fasta、cds(DNA 配列) frame 毎の終止コドンの数を単純に数える場合。
# エラー処理など割愛、インデントは全角空白
sub cnt{
# sequence を 3base 区切りにし、table と照合し、該当数を帰す。
my %table = %{ shift @_ } ;
( my $seq = shift ) =~ s/(.{1,3})/$1 /g ;
return scalar grep { $table{$_} } split /\s+/, $seq ; # hit 無しの場合は 0 が帰る
}
my %stopcdn = qw( TAA 1 TAG 1 TGA 1 ) ;
# file を丸呑みした後、/(?=^>)/m にて split し、無名配列として回す。
for ( split /(?=^>)/m, do{ local $/ ; <> } ) {
s/^>(.*?)$//m ; my $name = $1 ; s/[\n\r\s]//g ; my $seq = uc ; # ごにょごにょ調整、大文字化
# frame 順に cnt させ、その結果をプリント。
printf "%s\tframe%d\t%d\n", $name, $_ + 1, cnt \%stopcdn, substr $seq, $_ for 0 .. 2 ;
}
0214209
2008/09/19(金) 18:44:46ID:???添削ありがとうございます。
半端な知識で回答してしまって申し訳ないorz
>>117氏を混乱させるとこでした。
出直してきます。
0215nobodyさん
2008/09/20(土) 07:08:55ID:???ゲームの得点ランキングを作ろうと思い、
名前・得点・コメントを入力してランキングに登録するといった形のものを作りたかったのですが、
値を入力し、送信してもうまく表示されません。
logのファイルに書き込みはできてるみたいですが、正しくかけていないように思えます。
どうすればランキングを表示できるでしょうか?
もうどこが間違ってるのか分からなくなってしまいましたので、アップロードさせていただきました。
どなたか修正・ご指導よろしくお願いします。
0216215
2008/09/20(土) 07:44:46ID:???URLミスです。こちらでお願いします。
http://www.cgi-web.net/download-top.html様の
quizというCGIを元に改造してみたものです。
よろしくお願いします。
0218nobodyさん
2008/09/20(土) 08:23:17ID:???0219nobodyさん
2008/09/20(土) 08:39:59ID:???★三 【 スクリプト改造工房 PART 9 】 ★三
http://pc11.2ch.net/test/read.cgi/php/1143834740/
0220215
2008/09/20(土) 18:44:01ID:???ありがとうございました。
0221nobodyさん
2008/09/21(日) 08:39:11ID:???どこの解説ページを見ればいい?
XAMPPと自分でインストールしたアパッチで、
もう、通常のHTMLファイルと、PHPは
動くようになってます。
PerlもActivePerlでDOSプロンプトのコードは
動くようになってます。
あと、たぶんアパッチの設定だと思うんですけど。
0223nobodyさん
2008/09/21(日) 10:49:20ID:???それで、普通のhtmlファイルは表示できるし、
http://localhost/1/1.htmlとかで。
そんで、PHPのファイルも実行できるんよ。
http://localhost/xampp/
そんで、今、パソコンの中に、
ActivePerlがインストールされているんだけど、
さらに、xamppのホームページにある、
perlのアドオン、ていうのをとってきて、
インストールしないとだめなのかなぁ?って思って。
でも、そんなことしたら、自分のパソコンの中に、
activeperlと、xamppのperlと、二つのperlが混在することに
なりますよね。それでいいのかなぁ?と。
0224nobodyさん
2008/09/21(日) 10:51:02ID:???自分のパソコンの中で動かすこと!
で、アパッチはたぶん、xamppのアパッチを使えばいいと
おもうんだけど、perlは、前から使ってるactiveperlで
いいのかな?って。
その場合、何か設定は必要なの?
その場合、その設定は、xamppの、アパッチの、
httpd.confに対して行うの?
0225nobodyさん
2008/09/21(日) 10:59:17ID:???できた。できた。できた。できた。できた。できた。できた。できた。できた。できた。できた。
ボクのパソコンの中でハローワールドが動いた!!!!!!!!!!!!!
0226nobodyさん
2008/09/21(日) 11:10:05ID:???忘れていたものを思い出させてくれた
0227nobodyさん
2008/09/21(日) 14:44:46ID:???0228nobodyさん
2008/09/21(日) 18:53:27ID:???0229nobodyさん
2008/09/21(日) 21:55:27ID:???0230nobodyさん
2008/09/21(日) 23:12:41ID:???0231nobodyさん
2008/09/22(月) 02:52:25ID:???0232nobodyさん
2008/09/26(金) 08:48:40ID:???for (1..5) {
flock(FH, 2) and last;
sleep 1;
}
0233nobodyさん
2008/09/26(金) 10:00:49ID:???0234nobodyさん
2008/09/26(金) 10:12:12ID:???0235nobodyさん
2008/09/26(金) 11:15:27ID:???いくつかのファイルのうちどれかでロックが取得できればいい場合に
LOCK_NBつけて、場合によってはループまわすことはあるが
普通に使ってる分にはそんな事する必要もない
0236nobodyさん
2008/09/26(金) 11:25:11ID:???0237nobodyさん
2008/09/26(金) 11:27:33ID:???0238nobodyさん
2008/09/26(金) 12:15:18ID:???了解しました。
0239nobodyさん
2008/09/26(金) 13:37:22ID:???0240nobodyさん
2008/09/29(月) 01:27:41ID:???規模が大きくなるにつれてファイルを分割したのですが、
モジュールが呼び出し元のパッケージの変数を要求することが多く、
一々変数の前にパッケージ名をつけなければならないのが非常に面倒です。
mainパッケージの変数を簡単に呼べるようにno strictしたりもしましたが、
こうするとコードを書く効率が悪くなります。
何か解決法は無いでしょうか?モジュールの分割の方法が下手なんでしょうか。
0241nobodyさん
2008/09/29(月) 01:39:41ID:???0242nobodyさん
2008/09/29(月) 01:53:46ID:???わざわざ名前空間を明示しない意味がわからない
例えば新宿駅で、京王線のホームで駅員を呼んだら京王線の職員が駆けつけてくれたのに
「JRの職員が来ないのはなぜだ!!(#゚Д゚)」と言ってごねている人を君はどう思うか・・・
八王子市内から市外局番なしで電話をかけておいて、「03局に繋がらない!!(#゚Д゚)」と言って
NTTにクレームを付ける人をどう思うか・・・
0243nobodyさん
2008/09/29(月) 04:50:42ID:???以下のようなプログラムをtest.plとして保存し、プロンプトから
>perl test.pl hoge hugaと実行すると引数が想定どおりに表示されていきますが
>test.pl hoge hugaとすると何も表示されません。
拡張子.plはperl.exeと関連付けられているので実行はされるんですが、引数がうまくわたっていないようです。
後者の場合でも引数が表示されるようにするにはどうすれば良いでしょうか教えてください。
$i = 0;
foreach (@ARGV) {
print "$i:$_\n";
$i++;
}
環境:WindowsXPとActivePerl v5.8.8
0244nobodyさん
2008/09/29(月) 09:02:48ID:???廃棄するしかないですね
0245nobodyさん
2008/09/29(月) 10:17:10ID:???関連付けが間違ってるか、Windowsが壊れたかのどっちか。
うちのWindowsは、たまに関連付けが壊れるので困る。
C:\Perl\bin\perl.exe "%1" %*
0246nobodyさん
2008/09/29(月) 14:38:34ID:???それで画像のリサイズはImage::Magickで何とかなったんですが、作成後の容量がかなり大きくなります。
元の画像が100KBに対して、サムネ画像は30KBくらい。
quality値を下げても、画像が劣化するだけで容量がほとんど変わりません。
解像度はこれ以上落とせないとして、何か容量減らす方法って何か無いでしょうか?
理想は10KB以下で、画像の劣化は多少は諦めます。
どなたか分かる方がいればお願い致します。
0247nobodyさん
2008/09/29(月) 15:59:15ID:???どういうコード書いてるかエスパーじゃないからわからないけど小さくするのにresize関数
使ってるとか?
0248nobodyさん
2008/09/29(月) 17:18:36ID:???resizeで画像を小さくした後、Setで画質を下げてます。
以下ソース。
$gazouはアップされた640×480の画像です。
use Image::Magick;
$image = Image::Magick->new;
$image->Read("$gazou");
$image->Resize(width => 160,height => 120);
$image->Set(quality=>50);
$image->Write("$gazou2");
0249247
2008/09/29(月) 18:00:47ID:???$image->Sample(width=>160, height=>120);
thumbnailって関数あったと思ってたけどぐぐっても見つからなかった
ScaleかSampleだったかな
とにかく画像の容量は境目が鮮明なほど大容量になるから普通はぼかし入れてサイズ変更
することで容量がコンパクトに収まる。確かResize関数はそれをやってなかったから脹れる
0250nobodyさん
2008/09/29(月) 18:08:53ID:???return $rc if $rc = $image->Read( $_[0] );
my($width,$height) = $image->Get( 'width' , 'height' );
return $rc if $rc = $image->Thumbnail( width => $WIDTH , height => $height * ( $WIDTH / $width) );
return $rc if $rc = $image->Write( $_[1] );
0251nobodyさん
2008/09/29(月) 18:29:54ID:???JPEG使えばquality=>50で大体10k切れると思う。
0252246
2008/09/29(月) 20:17:47ID:???>>250を参考に、>>248のソースの中のこの行を、
$image->Resize(width => 160,height => 120);
$image->Thumbnail(width => 160,height => 120);
こう変えてみたのですが、エラーも何も出ずに処理が中断されました。
ちなみにResizeをScaleとSampleに変えた場合は、いちおう画像は作成されましたがResizeと同じような容量でした。
ひょっとしてサーバーが対応してないのかな…
0253251
2008/09/29(月) 20:25:35ID:???せいぜい頑張りたまえ。
0256251
2008/09/29(月) 22:15:24ID:???Image::Magick使ってから発言してるか?
160*120ドットにResizeして、JPEG,Quality50でWriteするだけで、10KB以下になるぞ。
0257251
2008/09/29(月) 22:20:16ID:???GIFで圧縮したとしても、15KB程度ぐらいには圧縮可能だろうさ。
0258nobodyさん
2008/09/29(月) 22:24:21ID:???今回の場合とは違うかもしれないが、自分も似たような症状でハマったことがある。
原因は、画像に含まれるコメントなどの付加情報だった。
Thumbnailなら消えるのかな?
0259251
2008/09/29(月) 22:30:58ID:???0261246
2008/09/29(月) 22:56:00ID:???結果から言うと無事に減量に成功しました。
>>258さんの言う通り余計な情報が入ってたからみたいで、
$image->Profile();
このコマンドを使って付加情報を消してみまたところ、元が200KBの画像もQuality75で4KBほどに落ちました。
>>251さんの言うStripも試してみましたが、サーバーが対応してないのかしてエラーが…
何かあまりよく無い方法かもしれないけど、とりあえず減らせたのでこれでいってみようと思います。
本当はThumbnailが使えたら一番良かったんだろうけど…
皆様、どうもありがとうございました。
0262258
2008/09/29(月) 23:41:26ID:???お。そりゃえがった
0263nobodyさん
2008/09/30(火) 11:08:00ID:???くっついてるライブラリの問題?
0264246
2008/09/30(火) 14:15:08ID:???ロリポップですorz
多分かなりバージョンが古いと思います。
ローカルのサーバーだとImage::Magickの最新版入れたからどっちのコマンドも使えるんだけど…
逆にProfileがエラーで使えず。
このどっちつかずの状態が非常に面倒だw
0265nobodyさん
2008/09/30(火) 16:09:35ID:???0266nobodyさん
2008/09/30(火) 16:40:02ID:???0267nobodyさん
2008/09/30(火) 18:15:01ID:WMNZymKE0268nobodyさん
2008/09/30(火) 18:50:21ID:???Win32API も呼べる
http://www.google.co.jp/search?num=100&hl=ja&safe=active&client=firefox&rls=org.mozilla%3Aja%3Aofficial&hs=6gw&q=perl+Windows+GUI&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
0269244
2008/10/01(水) 05:05:58ID:???assoc .pl=Perl
ftype Perl=C:\Perl\local\bin\perl.exe "%1" %*
と何度かしているうちに直った
ありがとう
0270nobodyさん
2008/10/03(金) 14:04:41ID:???もしくはモジュールはありますでしょうか?
0271nobodyさん
2008/10/03(金) 14:23:53ID:???0273nobodyさん
2008/10/04(土) 18:08:22ID:???他のサーバにもそのままコピーしたいのですが
何か良い方法ありませんか?
同じ環境を作りたいんです
お願いします
0274nobodyさん
2008/10/04(土) 18:12:10ID:???>他のサーバにもそのままコピー
それをやればいいと思うよ
0275nobodyさん
2008/10/04(土) 18:14:56ID:???な、なんだってー知らなかったー
0276nobodyさん
2008/10/04(土) 18:18:35ID:???0277nobodyさん
2008/10/04(土) 18:50:33ID:???0278nobodyさん
2008/10/04(土) 19:57:19ID:???0279nobodyさん
2008/10/05(日) 04:46:08ID:???なんつーか、自分のレベルの低さにげんなりすることってない?
あのレベルにいくまでどのくらいかかるのやら。
0281nobodyさん
2008/10/05(日) 09:32:19ID:???自分のペースでええやん。
俺なんかああいう人たちが苦労して切り開いた道を、すこーし後ろから付いていくだけだから。
まぁ追い抜きたいなら止めないけど。
0282nobodyさん
2008/10/05(日) 13:41:01ID:???CGI:Minimalの
違いについてカンタンに説明してください。
ちなみにグーグルで検索しても
説明ページは出てきませんでした。
0284nobodyさん
2008/10/05(日) 16:35:07ID:???お気に入りに入れておくといいよ。
http://search.cpan.org/
0286nobodyさん
2008/10/05(日) 21:52:46ID:???モジュールたくさんあって、みなさんこれ全部把握してるんですか?
有名なところだけしか使わないんですか?
初心者ですみません
0287nobodyさん
2008/10/05(日) 22:08:05ID:???それっぽいキーワードで検索して引っかかったもの使ったり
必要なところだけ切り出して使ったりしてるだけ
まぁ車輪の再発明と言われようが作ってみるのも悪くない。
0288nobodyさん
2008/10/05(日) 22:09:47ID:???日本語でも「cpan 機能名」でググればけっこー見つかるけど。
0289nobodyさん
2008/10/05(日) 22:11:33ID:???安心しましたw
有名どころと使えそうなのが検索で出たら使う
って感じですかね
0290nobodyさん
2008/10/05(日) 22:12:48ID:???これ良いですね試してみます
0291nobodyさん
2008/10/06(月) 04:55:13ID:???CPANの一覧表に一通り読んで、「おお、こんなものがあるのかそんなものもある
のか」とおどろきつつ大まかなところを掌握しておく。
……というのをやったのはもう数年前だな。
もう増え過ぎて困難になってるかな。
0292nobodyさん
2008/10/06(月) 08:23:17ID:mCk9rMM20293nobodyさん
2008/10/06(月) 08:59:44ID:???巨大な敵は陰に隠れるというが・・・
0294nobodyさん
2008/10/06(月) 16:08:49ID:4zLyyJ4I書き込みの条件を満たしているかチェックする関数、ログに書き込む関数、
と分けて
#!usr/local/bin/perl
&decode;
✓
&writelog;
のようにしているのですがcheckからある変数を
受け取って他の関数内で使いたいとき皆さんはどうしてますか?
グローバル変数でやろうとするとどうしてもグローバル変数がかなりの数に
なってしまいますし、だからと言って($abc,$efg)=&xyz;
のようにしてしまうと無駄な変数が増えてしまうしlocalでやるのも
結局、グローバル変数使ってるのとあまり変わらないような気がします・・・
上記のように&decode;✓…のようなやり方自体がよくないでしょうか?
馬鹿みたいな質問ですみません。答えていただけるとありがたいです。
0295nobodyさん
2008/10/06(月) 16:29:40ID:???use MYLIB;
my $obj= MYLIB->new;
$obj->decode;
$obj->check;
$obj->writelog;
0296nobodyさん
2008/10/06(月) 17:11:10ID:???やり方は色々だけど。
hash(のref)渡しもあるね。
use Data::Dumper ;
my %hash = ( hoge => 1 , foo => 1 ) ;
sub hoge{ shift->{hoge} = q{hoge} ; }
sub foo { $_[0]->{foo} = q{foo} ; $_[0]->{piyo} = q{new} ; }
sub bar{ my $ref = shift ; $ref->{bar} = q{new} ; }
hoge \%hash ;
foo \%hash ;
bar \%hash ;
print Dumper \%hash ;
0297nobodyさん
2008/10/06(月) 17:49:55ID:???0298nobodyさん
2008/10/06(月) 18:21:26ID:???0299nobodyさん
2008/10/06(月) 18:23:54ID:mCk9rMM2掲示板くらい。
0300nobodyさん
2008/10/06(月) 18:32:07ID:???my %query = &decode;
my $error1 = &check(%query);
my $error2 = &writelog(%query);
まぁグローバル変数もわかってないんだろうけど。。。
0301sage
2008/10/06(月) 20:36:18ID:5bsf/GRb*.txtの内容
<A href="../$page.html>リンク</A>
↓呼び出す
*.cgiの内容
$page = a;
$data[0]
txtの内容はちゃんと反映されてるのだが、
*.txtの中の$pageはそのまんま反映されてしまう。
(http://***/$page.htmlのまま)
どうしたもんか?
0302nobodyさん
2008/10/06(月) 20:41:43ID:???もうちょっと推敲してから質問してくれ
0303nobodyさん
2008/10/07(火) 01:05:04ID:???別所ですが、ちょうど同じような質問が出されていたみたいですよ。
ttp://pc11.2ch.net/test/read.cgi/php/1218030872/301
0304nobodyさん
2008/10/07(火) 01:05:59ID:???0305nobodyさん
2008/10/07(火) 01:07:19ID:???0306nobodyさん
2008/10/07(火) 01:48:33ID:YSCh74Wr正直皆さんの回答を見ても知識不足のためよくわかりませんでした・・・
>>299さんの言うとおり重さや綺麗汚い気にせずとりあえずグローバル使い
まくりで仕上げてみようと思います。答えてくださった皆さんありがとうございました。
0307nobodyさん
2008/10/07(火) 11:22:00ID:???進研模試でいうとfjがおよそ偏差値45、民放地上波は約40、
ニュース速報+は35程度を対象にしています。
0308nobodyさん
2008/10/07(火) 12:38:56ID:???0309nobodyさん
2008/10/07(火) 23:22:26ID:???「データのリファレンスを受取って(デコード|チェック)済データのリファレンスを返す」ように各サブルーチンを書いておいて:
&writelog(&check(&decode));
0310nobodyさん
2008/10/07(火) 23:46:05ID:???一回で済ませ
0311nobodyさん
2008/10/08(水) 00:07:51ID:???悪いこといわんから変数受け渡しで書いてみろ。
ハッシュ(参照)で受け取って、ハッシュ(参照)で渡せば、なんてことはない。
特に永続化環境(mod_perl等)ならグローバルを使うという発想はないと思ったほうがいい。
0312nobodyさん
2008/10/08(水) 00:50:42ID:???$hoge = 'http://excite.co.jp/?hoge=hoge&huga=huga';
$hoge = 'http://goo.ne.jp/?hoge=hoge&huga=huga';
などの、ドメイン部分が不定な文字列を、すべて
$hoge = 'http://example.com/?hoge=hoge&huga=huga';
のように置換したいのですが、どんな置換をすればいいでしょうか?
0314nobodyさん
2008/10/08(水) 01:07:59ID:???ヒント:置換演算子
s{http://[^/]+}{http://example.com};
0316nobodyさん
2008/10/08(水) 02:25:08ID:Ayb4NO8c0318nobodyさん
2008/10/08(水) 04:22:18ID:???0319nobodyさん
2008/10/08(水) 05:46:48ID:???ttp://oshiete1.goo.ne.jp/qa3380695.html
このサイトで質問してる人と同じ質問ですが、
クッキーは使わず、複数のドラッグできる画像の移動したデータを他の人も移動後の状態で閲覧できるようにしたいです。
掲示板のスクリプトを利用して全部保存すれば、元からロックも付いてて便利だと思ったのですが、
座標を渡すことが出来ないので困ってます。
現在HTMLにジャバスクリプトで簡単な形を作って試しているのですが、
どうにも、保存のところで何もアイデアが浮かばない。
一週間、暇な時間に検索して回ったのですが、
解決策には出会えませんでした。
ジャバスクリプトで移動できる画像ファイル(img1~img6等)とコメント部を各画像毎に対応させた名前のボタンをクリックすることで
コメントと画像ファイルを保存できるようにしたい。
何か知恵を貸してください。
0320nobodyさん
2008/10/08(水) 05:57:55ID:vsHGNNNAスクリプトが大きくなれば大きくなるほどスクリプト自体見づらくなるだろうし、
他人からすると見づらいかもしれませんが、無駄に変数作って無駄にメモリへの書き込み
増やすぐらいならグローバル変数使うほうがいいと思ってました。
変数の中身が同じ内容なら新しく書き込まず同じメモリを参照するということはないですよね?
皆さんが教えてくれた方法をいくつか試してやってみようと思います。
質問に答えてくださった方々ありがとうございました。
0321nobodyさん
2008/10/08(水) 06:58:31ID:???>>296のように、リファレンスで渡せばコピーは発生しないよ。
直接中身を弄れるから、returnで返す事も要らない。
0322nobodyさん
2008/10/08(水) 10:04:27ID:???この考え方のが無駄
0323nobodyさん
2008/10/08(水) 10:25:26ID:???どんなんだろうとは思う。
0324nobodyさん
2008/10/08(水) 10:40:29ID:???0325nobodyさん
2008/10/08(水) 16:11:59ID:KrA4Ywcmそうなんですか。自分はパッケージ?(Data::Dumper)というのは触ったことないので
これを機会に触ってみようと思います。
>>322 >333
仮に完成しても人が来るかもわかりませんが仮に来てくれて書き込みがあった場合
1回の書き込みでテキストから100行ほどの文を3つの配列によみこんでまた書き込みしなければ
いけないので変数受け渡しでやるとすごい負荷になるんですよね。
しっかりした知識があれば1つの配列で収まるかもしれないし
それ以前に配列だけグローバル変数にすれば済む話ですが。
とりあえずできる限りローカル変数にしてみようと思います。
0326296
2008/10/08(水) 17:23:24ID:???掲示板の機能とかには関係ありません。
>>296を全部コピペして、「コマンドラインから実行」してみてください。
%hash の内容が書き換っている事が分ります。
0327nobodyさん
2008/10/08(水) 18:07:19ID:???変数が一部分でしか使われていないなら、その使われている辺りを調べればいいけど、
グローバル変数の場合、最悪、全てのソースコードとにらめっこすることになる。
サブルーチンのテストするにしても、グローバル変数がどこで使われてるのか
分からないから、全ての変数を設定しないといけない。
そんな理由で、グローバル変数は定数ぐらいにして、捨てたほうが楽になるよ。
同じ理由で、一つのハッシュに詰め込みすぎるのにも注意してね。
0328nobodyさん
2008/10/08(水) 18:20:31ID:???掲示板と画像ドラッグを同列に扱うという感覚がよくわからない。
あるページに複数がアクセスしてるとき、誰が画像の主導権を握るの?
リアルタイムで動かすなら、Perlではどうにもならんから、AjaxとかASP.NETスレで訊いてみれば?
0329nobodyさん
2008/10/08(水) 19:13:15ID:Ayb4NO8cいくら変数をローカルにしたところで、無駄な処理やループが大毛りゃ話になりません
0330nobodyさん
2008/10/09(木) 00:02:38ID:???書き込みボタンを押した時点で、ロックをかけようと思ってます
同時に何人かが動かし続けるような状態にはならないと思う
A 画像A
B 画像B
書き込みボタン
Aさんが画像を動かして書き込みボタンを押して変更したとき
Bさんは動かす前の画面のままで、画像を動かし書き込みボタンを押したら、Aさんは無視してBさんが動かした状態に更新されていいです
それか
A 画像A OK Clear
B 画像B OK Clear
こんな風に数行に渡ってかかれたものをOKボタンで座標と名前上書きでもいい
一人の人が一つのボタン、一つの画像と名前用テキストボックスを所有
Aが動かしたとき、Bがアクセスし動かしてても、ページはAが動かす前の状態
Aが動かし終わってAの画像座標を保存したとき、Bが見てるのはまだAが動かす前の状態
Bが動かしてOK押したとき、やっとBが見れるのはAもBも動いた後の状態
こんな風にできたらいいなと思ってます
Javaよりも、ジャバスクリプトとParlでできそうと思って・・・
ジャバスクリプト部分は完成してます
後はOKボタンでどう座標を保存するか・・
説明いまいちですか?
0331nobodyさん
2008/10/09(木) 02:03:13ID:???A,Bはそれぞれ自分専用の画像を動かすってこと?
ま、いいやw
座標をクエリ文字列にしてURLにして送信ってとこまではおk?
JSONにして送信してもいい。
基本的にJavascriptの質問な気がする。。。
0333nobodyさん
2008/10/13(月) 00:56:20ID:Zn63xY/1以下のようにデフォルトキャラセットをUTF8とし、メールを解析しているのですが、
MIME::WordDecoder->default(MIME::WordDecoder->new(['*' => sub {jcode(shift)->utf8},]));
my $body = unmime($entity->bodyhandle->as_string);
文字列「結構色々」の「構色」で文字化けが発生し、以降の文がおそらくアスキー文字の出現まで文字化けが続きます。
結=?'!9FI$・・・・・・・・というような文字列に文字化けしています。
もとの文字列(メールの原文ISO-2022-JP)をJcodeで直接UTF8にコンバートするとこのような文字化けは発生しません。
これは何が原因かわかる方はいらっしゃいますか?
unmimeはbase64エンコードされたメールなども処理するので、できれば使いたいのですが。
0334nobodyさん
2008/10/14(火) 02:12:34ID:7R/mK8k7PerlでApacheのnoteを取りに行くにはどうすればいいでしょうか?
test.cgi
#!/usr/bin/perl
print "Content-type: application/x-httpd-cgi\n\n";
my $r = Apache->request()->main();
my $name = $r->notes('name');
print $name;
exit(0);
参考元:http://jp.php.net/manual/ja/function.apache-note.php
取りに行くのに必要な条件、足りない記述などを教えていただきたいのです。
ファイル内の記述以外に、mod_perlが必要だとかはありませんか?
ご教授、よろしくお願いします。
0335nobodyさん
2008/10/14(火) 10:26:02ID:???0336nobodyさん
2008/10/15(水) 13:00:34ID:???たしかモジュールで提供されてたと思いますが・・・
0337nobodyさん
2008/10/15(水) 18:02:46ID:???use Time::Local;
$time_str = "2008/10/15 17:54:32";
$time = timelocal sub{@_[5,4,3,2],$_[1]-1,$_[0]}->($time_str=~m!^(\d+)/(\d+)/(\d+) (\d+):(\d+):(\d+)$!);
0338nobodyさん
2008/10/15(水) 18:03:45ID:???0341nobodyさん
2008/10/17(金) 17:00:00ID:M5nni1qD変数内の末尾のスペースが全て削られて、
実行されてしまうのですが、同様の事象を経験した人いませんか?
0342nobodyさん
2008/10/18(土) 18:37:34ID:???8年前なので内容が古いのではないかと少し心配です。
この本は、今でも十分実用に耐えうる本でしょうか?
CGIプログラミング 第2版
http://www.oreilly.co.jp/books/4873110440/
0344nobodyさん
2008/10/18(土) 20:18:42ID:???0345nobodyさん
2008/10/19(日) 01:16:41ID:???それで以下のソースのように、「test.mp3」というファイルを「2008.01.01.mp3」という風にリネームしてダウンロードしたいのですが…
#!/usr/local/bin/perl
$fname = "2008.01.01.mp3";
$mime = "Content-type: audio/mpeg\n\n";
print "Content-disposition: attachment; filename=\"$fname\"\n";
open(FILE,"test.mp3");
print $mime;
binmode(FILE);
binmode(STDOUT);
print <FILE>;
close(FILE);
この方法だと、何故か「2008[1].01.01.mp3」という風に、間に[1]という文字が挿入されてしまいます。
ドットが2回続くとこうなるみたいですが…
ちなみにIEだけでこうなるみたいで、OperaやFireFoxでは問題なくダウンロード出来ました。
もしIEで正常にダウンロードする方法があれば、どなたか教えて頂いてもよろしいでしょうか?
よろしくお願い致します。
0346nobodyさん
2008/10/19(日) 02:12:01ID:???0347nobodyさん
2008/10/19(日) 02:14:25ID:???キャッシュは最初の.までしかファイル名としてみてないのか・・・
やっぱりあほだな>IE
0348nobodyさん
2008/10/19(日) 06:32:58ID:???A-Za-z0-9_
な範囲でいこーぜ
0349345
2008/10/19(日) 22:03:33ID:???どうもありがとうございます。
やはりIE特有のバグみたいですね・・・
Content-dispositionを使うと強制的にShift-JISになったりと、IE何か微妙すぎるよorz
今までの書式が2000.01.01のような形だったので、出来ればそのままが良かったのですが・・・
せっかくなんでファイル名を変えるようにしてみます。
皆様、どうもありがとうございました。
0350nobodyさん
2008/10/24(金) 17:38:04ID:gaOQS66Zテンプレ >3 に[Perl5.8Unicodeメモ]がありますが、perl5.6.1ではどうすればよいのでしょうか?
(>3 [Perl5.8Unicodeメモ]の一番上はリンク切れのようです)
やりたいこと:データベース(euc)からデータを読んでutf8に変換してHTMLを出力する
やってみたこと:↓
---------------------
use strict;
use utf8;
use Unicode::Japanese;
use DBI;
(@list にDBからデータ取得)
print "Content-Type: text/html\n\n";
print <<HTML;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>UTF-8 表示テスト</title>
</head>
<body>
<h1>UTF-8 表示テスト</h1>
<table border="1">
<tr><th>ID</th><th>データ1</th><th>データ2</th><th>データ3</th></tr>
HTML
(つづく)
0351350
2008/10/24(金) 17:48:16ID:gaOQS66Zmy $jcode = Unicode::Japanese->new();
my($id, $data1, $data2, $data3);
for (0..$#list-1) {
$id = $list[$_]->{id};
$data1 = $jcode->set($list[$_]->{data1}, 'euc')->utf8;
$data2 = $jcode->set($list[$_]->{data2}, 'euc')->utf8;
$data3 = $jcode->set($list[$_]->{data3}, 'euc')->utf8;
print qq|<tr><td>$id</td><td>$data1</td><td>$data2</td><td>$data3</td></tr>\n|;
}
print <<HTML;
</table>
</body>
HTML
exit;
--------------------------------------
これで(私が見る限り)問題なく動作しました。
DBのデータには機種依存文字も含まれているのですが、それも出力されました。
これでいいのでしょうか?
0352350
2008/10/24(金) 17:51:40ID:gaOQS66Z上のソースはutf8で書きました。
0353y
2008/10/26(日) 01:17:05ID:???http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1220150877
506 :目のつけ所が名無しさん:2008/10/26(日) 00:47:20
大手ECサイトで、ここまで派手なリリース失敗は初めて見た。
エンジニア向けIT情報誌や関連サイトは、ぜひ取材して原因を明かして欲し
いは。
0354nobodyさん
2008/10/26(日) 04:20:46ID:???ちゅか、お金を扱うサイト作るの怖い。
0355nobodyさん
2008/10/26(日) 09:49:05ID:???0356nobodyさん
2008/10/27(月) 17:52:44ID:???ページによっては情報を取得できないことがあるようです。調べてみたところ
リクエストの成功判定がおかしいらしく、ページによっては代入したリクエス
ト結果の値が変わってしまう(?)みたいです。原因がよくわからないので
アドバイスをいただけたらと思います。よろしくお願いします。
use HTTP::Request;
use LWP::Parallel;
my $pua = new LWP::Parallel::UserAgent;
$pua->max_hosts(1);
$pua->remember_failures(1);
$pua->agent('HTTP Test Program 0.1');
my $site = {
method => GET,
url => 'http://www.w3.org/MarkUp/Drafts/',
# url => 'http://www.w3.org/',
};
my $req = HTTP::Request->new($site->{method}, $site->{url});
$req->{site} = $site;
print $req->as_string();
if (my $res = $pua->register($req)) {
print STDERR $res->request->url, "\n";
print STDERR $res->error_as_HTML;
}
my $entries = $pua->wait(300);
foreach (keys %$entries) {
my $res = $entries->{$_}->response;
print $res->code.":".$res->message."\n";
$res->request->{site}{response} = $res; # 代入
$res ? print "Success\n" : print "Fail\n"; # 代入元
$site->{response} ? print "Success\n" : print "Fail\n"; # 代入先
}
0357nobodyさん
2008/10/29(水) 10:01:41ID:???下記のように前のページからPOSTデータを取得してTemplateに書き出したいのですが、
POSTのデータが受け取れません。
どう修正すればよいでしょうか?
#! /usr/bin/perl
use strict;
use warnings;
use Tripletail qw(/dev/null);
use CGI;
$TL->startCgi(
-main => \&main,
);
sub main {
my $t = $TL->newTemplate('template.html');
my $cgi = CGI::new();
#前ページからPOSTデータの取得
$a = $cgi->param('a');
$b = $cgi->param('b');
$t->expand(
STR => $a,
NUM => $b,
);
$t->flush;
}
0358nobodyさん
2008/10/29(水) 17:52:23ID:???0359nobodyさん
2008/10/29(水) 18:33:23ID:???0360nobodyさん
2008/10/29(水) 18:43:45ID:???0361nobodyさん
2008/10/30(木) 03:00:37ID:???perlのパスは以下のとおりにするといいよ
#!C:/perl/bin/perl
0362nobodyさん
2008/10/30(木) 09:23:45ID:???Tripletail::Template::Node#expand: the value for key [NUM] is not defined. (key [NUM] の値が指定されていません)
と表示されます。
0363nobodyさん
2008/11/02(日) 21:06:44ID:???datに書き込んだログデータを読み込む場合って
配列、変数、連想配列、
どれに読み込むのが読むのも吐き出すのも早いですか?
0364nobodyさん
2008/11/02(日) 21:14:51ID:???一度の実行で何度も繰り返すわけじゃないからどうでもいいレベル
結論を言うと後で見てもわかりやすいようにバグの入り込む余地がないくらい手堅く書くのがいいかと
0365nobodyさん
2008/11/02(日) 21:30:21ID:Tjmw1r4yスカラー、配列、ハッシュ、
どれが掲示板のログデータを読み出し吐き出しすることに向いてますか?
って質問です。
>>364
なら配列の方が手軽でよさそうですね、ありがと
0366nobodyさん
2008/11/03(月) 11:36:36ID:???0367nobodyさん
2008/11/03(月) 12:00:57ID:???小規模掲示板レベルであればテキストファイルにしてインデックスを用意したようが扱いやすい
DB は確かに扱える人からすりゃ便利すぎて他の考慮の余地ないかもしれないが、全ての環境で DB が動いてる、導入されてると思うな。って思うんです。
0368nobodyさん
2008/11/03(月) 20:35:21ID:???0369nobodyさん
2008/11/04(火) 01:08:37ID:???0370nobodyさん
2008/11/04(火) 01:53:06ID:???data[335]->{'time'}
みたいに扱えるようにしてるからさほど苦労はない
ただ多岐に渡るデータの全文検索とかになると TSV の場合
数千件のデータすらタイムアウトになるから
全データを1つのファイルにまとめた検索用データを作ったりと、ソースがみすぼらしくなるw
0371nobodyさん
2008/11/06(木) 02:33:06ID:???一行目をカラム名にして $index{'カラム名'}=左から何列目 といいきかせ、
次の行からは @hoge に split でそーにゅーして、
$hoge[$index{'カラム名'}] でいぢくれば、
表に変更があっても保守楽かなぁ。
0372nobodyさん
2008/11/06(木) 07:50:45ID:???0374nobodyさん
2008/11/06(木) 09:59:01ID:???0375nobodyさん
2008/11/06(木) 10:23:52ID:???0376nobodyさん
2008/11/06(木) 11:15:22ID:???0377nobodyさん
2008/11/06(木) 12:29:12ID:???今時mysqlとSQLiteくらいは使えるとこ結構あるよ
http://atpages.jp/
てかめんどくさいから好きなの使いなよ
http://atbb.jp/
http://atbbs.jp/
http://atchs.jp/
http://atpaint.jp/
http://rentalbbs.livedoor.com/
0379nobodyさん
2008/11/07(金) 00:27:13ID:???0380nobodyさん
2008/11/07(金) 00:35:54ID:???あとDBD::SQLiteよりDBD::SQLite::Amalgamation使ったほうがよくないか
それにしてもパッチあてないといけなかった気がするけど。
0382nobodyさん
2008/11/07(金) 11:15:39ID:???鯖変更の交渉も含め、金額に見合った仕事をするようにしないとなぁ、と思う。
0383nobodyさん
2008/11/07(金) 23:46:31ID:???0384nobodyさん
2008/11/08(土) 00:04:00ID:???Perlのverが5.6以下だったりするところけっこうあるんだよなぁ。
どちらにしても会社のサイトがロリポはないよね。名前的にw
0385nobodyさん
2008/11/08(土) 00:28:47ID:???まーPerl5ならなんとかなる。5未満は死んでくれ・・・
0386nobodyさん
2008/11/08(土) 00:48:56ID:???WindowsXP, ActivePerl 5.6.1
create table で失敗してるようなんだけど、どうやって調べればいいんだろう?
my $sql = <<'_SQL_';
CREATE TABLE test (
id integer primary key,
name
)
_SQL_
my $sth = $dbh->do($sql);
の実行後に
my $sql = sprintf "INSERT INTO %s (%s) VALUES(%s)", $table, keys %{$hashref}, (join ',', '?' x scalar(values %{$hashref}));
my $sth = $dbh->prepare($sql);
$sth->execute(values %{$hashref});
を実行すると、
DBD::SQLite::db prepare failed: no such column: name(1) at dbdimp.c line 268 at sqlite.pl line 41.
Can't call method "execute" on an undefined value at sqlite.pl line 42.
ってエラーがでる。
$hashref = {id => 1, name => "hoge"};
です。
0387nobodyさん
2008/11/08(土) 00:56:12ID:???0388386
2008/11/08(土) 01:05:43ID:???keys %{$hashref} と (join ',', '?' x scalar(values %{$hashref})) は間違い。
0389386
2008/11/08(土) 01:22:05ID:???my $sql = sprintf "INSERT INTO %s (%s) VALUES(%s)",
$table, join(',', keys %{$hashref}) ,join(',', ('?') x scalar(values %{$hashref}));
ところで、データベースはどこに作成されるのですか?
スクリプトのあるディレクトリに dbname というファイルが作成されますが、サイズは 0 バイトです。
0390387
2008/11/08(土) 01:28:36ID:???0391386
2008/11/08(土) 01:43:51ID:???keys で返ってくるキーの順番は保証されないけど、keys と values が同じ順番で返ってくるのことは保証されているのでは?
0392nobodyさん
2008/11/08(土) 01:56:38ID:???0394386
2008/11/08(土) 16:02:05ID:???↓のやり方で扱ってます。
my @column = qw(id name);
my %data;
@data{@column} = split /\t/;
my $id = $data{id};
0396nobodyさん
2008/11/09(日) 01:11:14ID:tiuPBzgUこれはどうやったらできるのでしょうか?
mailaddressとパスワードが20セットあり、それのアドレス帳をPGで自動取得したいんです。
同じ事を経験された方いらっしゃいますか?
0398386
2008/11/11(火) 11:21:11ID:???よろしくお願いします。
0399nobodyさん
2008/11/11(火) 12:05:41ID:???0400386
2008/11/11(火) 12:18:50ID:???PATHがどこか聞いているのだよ
0401nobodyさん
2008/11/11(火) 12:20:57ID:???書かなきゃカレントだろーが
0402nobodyさん
2008/11/11(火) 12:21:59ID:???0403nobodyさん
2008/11/11(火) 13:37:01ID:???0404386
2008/11/11(火) 14:04:05ID:???それぐらいも書けないなら解答すんなチンカス
0405nobodyさん
2008/11/11(火) 14:27:24ID:???ここで答えたら「チンチン言ってたら答えてもらえた」と思ってまたそうするだろう。
0407386
2008/11/11(火) 14:56:38ID:???0408486
2008/11/11(火) 20:48:30ID:???>> 399 レスありがとうございます。
DB接続時のファイル名指定を間違ってました。
my $dbh = DBI->connect("dbi:SQLite:dbname:$mydb","","");
下のように修正したら、スクリプトと同じディレクトリに指定した名称のファイルが作成されました。
my $dbh = DBI->connect("dbi:SQLite:dbname=$mydb","","");
作成されたファイルをバイナリエディタで見るとテーブルの情報やINSERTしたデータも入ってました。
お騒がせしました。
ただ、最初の方法でもデータをINSERTできるし、SELECTするとそれまで入力したデータ(約10件)を取り出せます。
>>389 で書いたように dbname という名称のファイルが作成されているのですが、あいかわらず 0 バイトです。
このファイルはスクリプトを実行してデータをINSERTするたびにタイムスタンプが更新されます。
これは、どうなっているのでしょうか?
0409V30
2008/11/11(火) 22:03:12ID:???0411nobodyさん
2008/11/12(水) 09:49:46ID:???リンクでもVirtualStoreでもないな。
0412r
2008/11/12(水) 12:10:00ID:DKrfzJ/y0413s
2008/11/12(水) 12:10:26ID:DKrfzJ/y0414k
2008/11/12(水) 12:10:49ID:DKrfzJ/y0415nobodyさん
2008/11/12(水) 12:41:44ID:???Winだと:はドライブ名の指定にしか使えないんじゃなかったっけ。
Eドライブにもファイルできてるかもな
0416nobodyさん
2008/11/12(水) 13:23:26ID:???0417nobodyさん
2008/11/12(水) 14:31:59ID:???0418nobodyさん
2008/11/12(水) 14:51:00ID:???0419Pentium
2008/11/12(水) 21:28:24ID:???ストリームって初めて知りました。
lfnutils というのを使って調べてみたら、確かにストリームにデータが記録されていました。
バイナリデータのため、文字化けしている部分がありますが >>408 と同様のデータでした。
http://www.monyo.com/technical/products/lfnutils/
すっごく、スッキリしました。
みなさん、ありがとうございました。
0420nobodyさん
2008/11/19(水) 17:11:01ID:???TripletaiLを使用して、CSVにデータを追加出力がしたいです。
Tripletail::CSVとTripletail::Filter::CSVが有るようですが、
画面上には何も表示なく保存又は上書き保存がしたいです。
良い方法はありますでしょうか?
ご教授御願いいたします。
0421nobodyさん
2008/11/19(水) 18:35:04ID:???0422nobodyさん
2008/11/22(土) 20:18:49ID:???0423nobodyさん
2008/11/23(日) 20:39:20ID:bs2lqy3Vと
my $hoge = Hoge->new;
は同じですか?同じだとしたら何故二つの呼び方があるのですか?
0424nobodyさん
2008/11/23(日) 20:41:59ID:???で、何故かについてはLarry Wallに聞いてくれ。
0425nobodyさん
2008/11/23(日) 20:47:43ID:???確かにこうやっても値渡らないね
0426nobodyさん
2008/11/23(日) 21:03:39ID:???なら行けなかったっけ? 最近この書き方していないからうろ覚えだが。
0427nobodyさん
2008/11/23(日) 22:14:26ID:???$obj = new Hoge
ってして、メソッド実行するときは
$obj->something();
ってしてるな。
0428nobodyさん
2008/11/23(日) 22:18:28ID:???0429nobodyさん
2008/11/24(月) 18:20:18ID:???ウォール(笑)
0430nobodyさん
2008/11/24(月) 21:27:28ID:???0431nobodyさん
2008/11/24(月) 21:35:16ID:???$obj= Hoge::new('Hoge');にすればいいかもな
0432nobodyさん
2008/11/25(火) 00:44:42ID:???確かめちゃったじゃんか。
ex.1)
use Data::Dumper ;
my $obj = new Data::Dumper [qw( hoge foo )];
print $obj->Dump ;
ex.2)
{
package Hoge ;
use Data::Dumper ;
sub new{ return bless { dat => \@_ }, shift ; }
sub echo{ print Dumper shift->{dat} ; }
}
my $obj1 = new Hoge q{hoge}, q{foo} ; $obj1->echo ;
0434nobodyさん
2008/11/26(水) 12:05:49ID:???特に、言語はPerlに限ったことではないんですが、CGIでソケットを使いた
いのです。
そこで質問ですが、レンタル・サーバーで、独自にポートを開くことは
可能でしょうか? 禁止されていて開けない可能性はありますか?
レンタルサーバー上で、CGIで独自にソケット/ポートを利用したプログ
ラミングの例はあるでしょうか?
0435nobodyさん
2008/11/26(水) 12:08:28ID:???0437nobodyさん
2008/11/26(水) 12:10:58ID:???0438nobodyさん
2008/11/26(水) 12:35:57ID:y5MzewIk1台まるごと借りるサーバーなら大丈夫だとは思うけど、そんなんだったら自鯖立てたほうがいいよ
(ちゃんと管理できるならね)
0439nobodyさん
2008/11/27(木) 04:12:01ID:???1: 自分はこういう事がしたい。
動的に作成されるpngの画像(具体的には株価チャート)をgifに変換したい
2: それでこんな風にやってみたが・・・
socketで画像を取得→imagemagickでgifに変換
3: こんなエラーが出て上手く行かなかった。
socketで取得した画像をimagemagickにどうやって渡せばいいか分からない
補足:
socketでの画像取得はできています(表示文を付けたらブラウザで見れました)
png→gif 変換はできています(テストイメージでできました)
tempイメージをサーバに作成しない方法で実現したいです(メモリ上で完結)
use Socket;
(省略)
画像取得処理
print "Content-type: image/gif\n\n";
while (<SOCKET>){print $_;}
↑テスト用表示文
(省略)
use Image::Magick;
$tempimage = Image::Magick->new();
$tempimage->Read($inimage);
↑ここでsocketのデータを渡したい
$tempimage->Write($putsam);
(終了)
0440nobodyさん
2008/11/27(木) 07:58:39ID:???open(IMAGE, 'image.gif');
$image->Read(file=>\*IMAGE);
close(IMAGE);
って公式にあるだろ…、それとファイルハンドルのなんたるかが
きちんと扱えればどうにかならないか?
0441nobodyさん
2008/11/27(木) 23:22:00ID:cBVqxC3+0442nobodyさん
2008/11/27(木) 23:33:30ID:???0443nobodyさん
2008/11/28(金) 00:37:03ID:???おっしゃるとおり、ファイルハンドルの何たるかを知りません。
socketに格納されてるバイナリデータをどうやって変数に代入すればいいのか
わかりません。変数に代入できれば先に進めそうなのですが。
バイナリデータをBlob形式に変換できればBlobToImageでできそうですね。
今日、調べてみます。
0444nobodyさん
2008/11/28(金) 02:13:22ID:???BlobToImageが一番安全っぽい。
0445nobodyさん
2008/11/28(金) 02:54:47ID:???$image->Read(file=>\*SOCKET);
メモリだけで完結するじゃん(落るらしいから意味ないけど)
0446nobodyさん
2008/11/28(金) 02:59:50ID:???一旦ファイル作っちゃった方がサーバーに優しくない?って気もするけどなんでオンメモリ何だろ?
ファイルハンドルになっちゃえばImageMagickで処理出来るよね?
こんな感じのできなかったけ?
my $buff;
open my $fh,'+>',\$buff;
print $fh <SOCKET>;
seek($fh,0,0);#fseekだっけ?
0447nobodyさん
2008/11/28(金) 08:12:17ID:???方がサーバに不可が掛らんと主張してるんだぞ君は。
0448nobodyさん
2008/11/28(金) 10:49:59ID:f7u8ti6kいつの時代からメインメモリより DISK および DISK I/O の方が処理コスト安くなったの?
0449nobodyさん
2008/11/28(金) 11:32:22ID:???0450nobodyさん
2008/11/28(金) 12:22:28ID:???それで問題あるなら、Image::Magickを使用することから見直した方がいい。
0451nobodyさん
2008/11/28(金) 13:23:12ID:???ReadもBlobToImageもだめみたいだったので
SOCKETから一回取り出してperlでバッファリングして
imagemagickの中でもバッファリングして
と無駄が多いなと感じて書きましたが
言われてみてればたしかにたいしたサイズでもないですね
0452nobodyさん
2008/11/28(金) 17:30:25ID:f7u8ti6kuse strict;
use CGI::Carp qw(fatalsToBrowser);
use warnings;
use CGI;
use LWP::UserAgent;
use Image::Magick;
my $ua = new LWP::UserAgent;
$ua->agent('IE5');
$ua->timeout(10);
my $response = $ua->get("http://i.yimg.jp/images/evt/ramen2008/shop/2/shop_il01.gif");
my $data = $response->is_success ? $response->content : undef;
#if(defined($data)){
# print "Content-Type: image/gif\n\n";
# print $data;
#}
my $image = new Image::Magick;
$image->BlobToImage($data);
print "Content-Type: image/png\n\n";
print $image->ImageToBlob(magick => 'png');
0453nobodyさん
2008/11/28(金) 19:56:27ID:???452さんの回答で出来てしまいましたね…。すごいです。
my $data = $response->is_success ? $response->content : undef;
↑の部分をSOCKETで実現する方法を実装できなくて悩みまくりました。
(SOCKET画像取得処理)
my $data = SOCKETで取得した画像
↑を実装する方法は引き続き勉強します。
0454nobodyさん
2008/11/28(金) 19:59:50ID:???0455nobodyさん
2008/11/28(金) 20:16:09ID:???まあ、そうなんですよね。
SOCKET使える環境で必ずLWPを使えるのであれば(よく知りませんが…)、
ほとんど意味ないですね。処理性能面でSOCKET優位等の理由がない限り。
みなさまのおかげでやっと実現できました。ありがとうございます。
0456nobodyさん
2008/11/29(土) 22:46:07ID:???0457nobodyさん
2008/11/30(日) 01:47:08ID:???設置方法で分からないことがあります。
今回作成したPerlのCGIをpng2gif.cgiとして、
urlをパラメータとし、以下のように出力します。
print "Content-Type: image/gif\n\n";
print $image->ImageToBlob(magick => 'gif');
htmlに
@<img src="png2gif.cgi?http://chart.cn.yahoo.com/t?s=000001.SS">
と記述すれば問題なく動きます。
が、SSIとして記述する場合、どうすればよいのでしょうか?
A<img src="<!----#include virtual="png2gif.cgi?http://chart.cn.yahoo.com/t?s=000001.SS"-->">
B<!--#include virtual="png2gif.cgi?http://chart.cn.yahoo.com/t?s=000001.SS"-->
Aは<img src ="">となりNG
Bはバイナリデータがそのまま出力(GIF89a〜文字化けの羅列)されてNG
Bはcgi側でgif形式で出力しているので理解できるのですが、@とAで動きが違うのはどうしてなのでしょう?
SSIとしてこのcgiを動かすにはどうすればよいのか分かりません…。
0458nobodyさん
2008/11/30(日) 02:09:05ID:o6oyERaL(3) は src には PATH であったり URL を指定すべきところにバイナリを出力してるから
(2) は t?s の部分をエスケープしてみたり、<!---- をちゃんと書き直してみたりしたらどうでしょう?
0459nobodyさん
2008/11/30(日) 02:54:50ID:???(0)<img src="png2gif.cgi?http://chart.cn.yahoo.com/t?s=000001.SS"><br>
(1)<img src="<!--#include virtual="png2gif.cgi?http://chart.cn.yahoo.com/t?s=000001.SS"-->"><br>
(2)<img src="<!--#include virtual="png2gif.cgi\?http://chart.cn.yahoo.com/t?s=000001.SS"-->"><br>
(3)<img src="<!--#include virtual="png2gif.cgi?http://chart.cn.yahoo.com/t\?s=000001.SS"-->"><br>
(4)<img src="<!--#include virtual="png2gif.cgi\?http://chart.cn.yahoo.com/t\?s=000001.SS"-->"><br>
(5)<!--#include virtual="png2gif.cgi?http://chart.cn.yahoo.com/t?s=000001.SS"--><br>
(6)<!--#include virtual="png2gif.cgi\?http://chart.cn.yahoo.com/t?s=000001.SS"--><br>
(7)<!--#include virtual="png2gif.cgi?http://chart.cn.yahoo.com/t\?s=000001.SS"--><br>
(8)<!--#include virtual="png2gif.cgi\?http://chart.cn.yahoo.com/t\?s=000001.SS"--><br>
結果
(0)正しい画像が出力される
(1)<img src="GIF89a〜文字化け〜"><br>
(2)<img src="[an error occurred while processing this directive]"><br>
(3)<img src=""><br>
(4)<img src="[an error occurred while processing this directive]"><br>
(5)GIF89a〜文字化け〜<br>
(6)[an error occurred while processing this directive]<br>
(7)<br>
(8)[an error occurred while processing this directive]<br>
タグ内にSSIを埋め込むことができないのでは?と思いましたが、結果を見ると問題なさそうです。
img srcのパラメータにバイナリデータをそのまま書いてしまっているように見えます。
img srcへの渡し方(ファイルを示すURL?)に問題がありそうです。難しい…。
0460nobodyさん
2008/11/30(日) 12:17:00ID:???img要素などを経由させるしかない。
つか、(0)をSSIに書いとけばいいんじゃないのか?
0461nobodyさん
2008/11/30(日) 12:33:15ID:???#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "<img src=\"png2gif.cgi\?http://chart.cn.yahoo.com/t\?s=000001.SS\">";
で、htmlに
<!--#include virtual="test.cgi"--><br>
で表示できました。
後だしで申し訳ないのですが、ssiでやりたかったのはhtmlソース上にcgi名を
表示させたくなかったという理由があります。
png2gif.cgiの方をいじらないとだめそうですね。ありがとうございます。
0462nobodyさん
2008/12/05(金) 20:58:52ID:???なんで?
0464nobodyさん
2008/12/06(土) 00:31:10ID:???newのみがクラスメソッドで、それ以外のメソッドがインスタンスメソッドだと思って間違いないでしょうか?
0465nobodyさん
2008/12/06(土) 01:12:27ID:???0466nobodyさん
2008/12/06(土) 14:04:47ID:nchXLVyQと呼び出した時 aaa のなんのメソッドが呼ばれるの?
aaa->new は new が呼ばれてるのは分かるけど …
0467nobodyさん
2008/12/06(土) 14:19:58ID:???package aaa;
use strict;
use warnings;
sub aaa {
warn "aaa::aaa";
bless {}, shift;
}
sub new {
warn "aaa::new";
bless {}, shift;
}
package main;
use strict;
use warnings;
aaa aaa;
0468nobodyさん
2008/12/06(土) 14:26:33ID:???書き方が違うだけでnewを呼んでる。
new aaa ; # 間接オブジェクト記法
aaa->new ; # 直接オブジェクト記法
{ package Foo ; sub new { bless {}, shift } sub get { "hoge\n" } }
print Foo->new->get ; # 直接
これを間接で書くと
print +( get { new Foo } ) ;
0469nobodyさん
2008/12/06(土) 14:55:41ID:???http://www.nicovideo.jp/watch/sm5377306
0470nobodyさん
2008/12/07(日) 00:51:48ID:5kiTreoU明示的に書いてやるかどうかの違いなワケっすね
0471nobodyさん
2008/12/08(月) 22:17:51ID:H0AbHxek$mail = "foo@mail.com"
$mailから文字列 foo と @mail.com を抜きだすにはどうしたらいいでしょうか?
0472nobodyさん
2008/12/08(月) 22:26:41ID:???0473nobodyさん
2008/12/09(火) 00:53:33ID:1e6/3LhQ0474nobodyさん
2008/12/09(火) 01:59:53ID:???0475nobodyさん
2008/12/09(火) 06:21:12ID:???$mail = 'foo@mail.com';
と書かないとダメだろ。俺も前に嵌ったことあるw
0476nobodyさん
2008/12/09(火) 11:16:40ID:1e6/3LhQ分離後の後者側には @ はいらないでしょ
それに分離するってことはホスト名が欲しいワケだよね?
だったら @ は邪魔なゴミじやない?
0477nobodyさん
2008/12/09(火) 11:18:20ID:???0478nobodyさん
2008/12/09(火) 14:29:32ID:D4e6X4gIできました!
ありがとうございます
@も含めて抜きだしたかったんです。
0479nobodyさん
2008/12/09(火) 23:43:03ID:ope7KV64本や入門サイトをあちこち見ても書き方が違うのです。
こちらの常連様方はどのように書いてますか?
0480nobodyさん
2008/12/09(火) 23:52:30ID:???0481nobodyさん
2008/12/10(水) 00:34:49ID:???echo content-type: text/plain
echo.
echo Hello World
これで出る
0483nobodyさん
2008/12/10(水) 11:51:10ID:???0484nobodyさん
2008/12/10(水) 12:11:54ID:???この . 忘れると、echoはoffです。が出るんだよなw
0485nobodyさん
2008/12/11(木) 01:03:04ID:???IO::Fileみたいなオブジェクトで$fh->getlineとしても$_に代入されません。
暗黙的に$_に代入させる方法はないでしょうか
0486nobodyさん
2008/12/11(木) 02:02:51ID:???で、お前さんの言ってる事がやりたくて、先人様がIO::Fileと言うラッパを生みだしたんだ。
use IO::File ;
my $fh = new IO::File;
if ($fh->open("< file")) {
while ( <$fh> ){ print ; }
$fh->close;
}
0487nobodyさん
2008/12/11(木) 02:10:00ID:???失敬。
0488nobodyさん
2008/12/11(木) 02:22:01ID:???0489nobodyさん
2008/12/11(木) 09:11:50ID:???0490nobodyさん
2008/12/11(木) 11:02:32ID:???文字数制限があったBASICの時代ならいざ知らず
0491nobodyさん
2008/12/11(木) 12:04:21ID:???シュワルツ変換とかで↓みたいなコードを曝されたらねえ、、、
my @foo
= map { my $ref = $_ ; $ref->[0] }
sort{ $a->[1] <=> $b->[1] }
map { my $val = $_ ; my $ref = [ $val , length $val ] ; $ref ; }
@bar
;
必要に応じて、適宜採用するのが良いと思うよ。
my @foo
= map{ $_->[0] }
sort { $a->[1] <=> $b->[1] }
map { [ $_, length $_ ] }
@bar
;
0492nobodyさん
2008/12/11(木) 14:21:39ID:???貴様、ラリー先生ですね!
0494nobodyさん
2008/12/12(金) 18:35:52ID:???0495nobodyさん
2008/12/12(金) 20:03:18ID:???0496nobodyさん
2008/12/12(金) 22:19:56ID:???0497nobodyさん
2008/12/12(金) 23:14:49ID:???http://search.cpan.org/search?q=speech&m=all&n=100
http://search.cpan.org/search?q=speak&m=all&n=100
0498nobodyさん
2008/12/12(金) 23:59:34ID:t4dUYMwZたとえばABCという文字の1番目と3番目を替える場合
$hoge = "ABC";
$s1 = substr($hoge,1,1)
$s2 = substr($hoge,3,1)
0499nobodyさん
2008/12/13(土) 00:01:31ID:???$hoge = "ABC";
$s1 = substr($hoge,1,1);
$s2 = substr($hoge,3,1);
substr($hoge,3,1) = $s1;
substr($hoge,1,1) = $s2;
で、できると思いますが、もっとスマートなやり方はないでしょうか?
0500nobodyさん
2008/12/13(土) 00:20:33ID:???$hoge = "ABC";
$s1 = substr($hoge,1,1);
substr($hoge,1,1) = substr($hoge,3,1,$s1);
0501nobodyさん
2008/12/13(土) 00:24:19ID:???0502nobodyさん
2008/12/13(土) 00:29:52ID:???ちなみに君の書いたコードだとACB
0503nobodyさん
2008/12/13(土) 00:42:46ID:???$hoge = reverse $hoge ;
じゃなきゃ
substr $hoge, 0, 3, reverse substr $hoge, 0, 3;
ちゅー手も。
0504nobodyさん
2008/12/13(土) 00:51:10ID:???深夜ありがとうございます。
文字数は非固定で、入替える文字もランダムですので、正規表現は無理そうです。
>>ちなみに君の書いたコードだとACB
確認せず書いてすみませんでした。
$hoge = "ABC";
$s1 = substr($hoge,0,1);
substr($hoge,0,1) = substr($hoge,2,1,$s1);
ですね。
もうちょっと考えてみます。
0505nobodyさん
2008/12/13(土) 01:01:23ID:???0506nobodyさん
2008/12/13(土) 15:58:49ID:???Perl が来た時代なんてあったのか?
0507nobodyさん
2008/12/13(土) 19:27:09ID:???ttp://www.hamakin.net/search/my_page_rank.html
このツールみたいに演算中に「演算中」と出しておいて終わったら
結果を表示したいのですがわかりません。。
これみたいなキーワードチェックツールを作っていてツール自体は
作れそうなのですが、「演算中」表示が解決できず困っています。
本当は、「演算中」ではなく、「10位まで終了」「20位まで終了」
としたいのですが、どちらもさっぱりで。。
0508nobodyさん
2008/12/13(土) 19:36:16ID:???だいたい、本当にそんな時間かかってるなら鯖の負担が大変だw
0509nobodyさん
2008/12/13(土) 20:08:28ID:???substr($hoge, 0, 1, substr($hoge, 2, 1, substr($hoge, 0 , 1)));
無理に文字列で操作しなくても、配列で操作してもいいんじゃないか。
my @hoge = split //, $hoge;
@hoge[0, 2] = @hoge[2, 0];
$hoge = join('', @hoge);
実際の操作が一回ならアレだけど、複数回適用するなら配列の方が楽。
0510nobodyさん
2008/12/13(土) 20:44:38ID:???すごいの?
レンタルサーバでやろうとしてたんだけど、迷惑かな。。
0511nobodyさん
2008/12/13(土) 21:10:00ID:???どうでもいいが
0512495-500
2008/12/13(土) 21:25:19ID:???配列の案までありがとうございます。
substr($hoge,0,1) = substr($hoge,2,1,substr($hoge,0,1));
で一行にまとめたのですが、
substr($hoge, 0, 1, substr($hoge, 2, 1, substr($hoge, 0 , 1)));
なんて事までできるのですね。
どれが一番よいかベンチとって、使用したいと思います。
0513nobodyさん
2008/12/13(土) 21:32:03ID:???ソースみるとjavascript使ってないんです。いっこも。
perlかどうかは分からないんですが。
「10位まで終了」「20位まで終了」 ってのは無理なのかな。。
0514nobodyさん
2008/12/13(土) 22:44:05ID:???見たけど、本来直接結果を表示できるところを、演算中と表示させるだけのcgiを間にはさんでしばらく表示し、
metaタグで結果ページのcgiに移動しているだけのようですね。フォームデータはそのまま結果ページcgiに渡すと。
★が動くのはアニメgifでしたよ。ワンクリ詐欺の技法。
まともに経過を表示させる方法を書こうと思ったけど、板違いなのでやめました。Webprog板へどうぞ。
0516nobodyさん
2008/12/14(日) 14:24:32ID:???514さま。感謝です!演算中表示はできましたです!
cgiをはさむってのは思いつきませんでした。
板違いでなければ、経過表示もお願いしたいのですが。。
あと、共有サーバでやるべきかどうか、どう思いますか??
0517nobodyさん
2008/12/14(日) 17:10:12ID:???後者はperldoc -fで出るけど前者は出ないしググっても全然情報がないす
0518nobodyさん
2008/12/14(日) 17:26:46ID:???ここにある chm とかサクっと検索できるし見てみるのどうよ
wantarray は、perlfunc に書いてあるね。
stringify は、各モジュールで勝手に文字列化するためのメソッド定義してるとかじゃね。
0519nobodyさん
2008/12/14(日) 17:31:24ID:???ありがとうございます、探してみます。
stringifyはcatalystで $c->path_to('hoge/huga')->stringify とかしたときのが知りたかったのでcatalystのソース読んでるところでした
0520nobodyさん
2008/12/14(日) 17:39:22ID:???その path_to のなかでつかってる Path::Class::Dir, Path::Class::File に
それぞれ stringify メソッドが定義されているよ。
0521nobodyさん
2008/12/14(日) 17:46:22ID:???依存モジュールが無いのでこの程度なら頑張れば読めそうっす
ありがとうございました。
0522nobodyさん
2008/12/14(日) 17:48:41ID:???0523nobodyさん
2008/12/14(日) 18:06:05ID:???あとは、初めて目にするモジュールがあれば、
CPAN で検索してみればいいんじゃないかと思う。
http://search.cpan.org/
死にゆく言語だががんがってくれ!
0524nobodyさん
2008/12/14(日) 18:22:07ID:???0527nobodyさん
2008/12/16(火) 13:59:20ID:vcMtnNeb以下のように "?" でURLとパラメータを区切ると思います。
http://server/path?name1=value1&name2=value2
しかし、あるサイトでは"?"を使わずに"/"が区切り文字になっているようです。
http://server/path/name1=value1&name2=value2
このような記法は普通に利用されるものでしょうか?
詳しく解説しているサイト(RFC)等がありましたら教えて下さい。
0528nobodyさん
2008/12/16(火) 14:21:14ID:???0530nobodyさん
2008/12/16(火) 14:30:11ID:???スレ違いスマソ
0533532
2008/12/16(火) 16:02:23ID:???0534nobodyさん
2008/12/16(火) 17:47:44ID:???【Apache】mod_rewriteについて語るスレ
http://pc11.2ch.net/test/read.cgi/php/1023791370/
探せばどっかに答えがあるというか、ほとんどその類の質問しかないスレ。
0535nobodyさん
2008/12/16(火) 20:34:45ID:???もしくはoverloadを有効に使っているモジュールを教えてください。
0536nobodyさん
2008/12/16(火) 21:24:29ID:???0537nobodyさん
2008/12/16(火) 21:26:06ID:???http://search.cpan.org/dist/perl-5.10.0/lib/overload.pm
http://perldoc.jp/docs/perl/5.6.1/overload.pod
0540nobodyさん
2008/12/25(木) 22:41:08ID:???http://www.google.co.jp/m?eosr=on&q=hoge&site=mobile&mrestrict=chtml&start=0&sa=X&oi=blended&ct=more-results
の、検索結果に引っかかったURLを抽出しようと、以下のコードを書きました。
my $url = 'http://www.google.co.jp/m?eosr=on&start=0&site=mobile&sa=N&mrestrict=chtml&q=hoge';
my $scraper = scraper {
process '.padbottom a', "link[]" => '@href';
process '.sftr a', "next" => '@href';
result qw/link next/;
};
my $uri = new URI($url . $word);
my $scraped = $scraper->scrape($uri);
for my $u (@{$scraped->{link}}) {
print "$u\n";
}
結果は、10件の検索結果に加え、「次の10件」と「PCサイトを見る」のリンクまで取れてしまいました。
検索結果のクラスは<div class="padbottom">で、「次の10件」と「PCサイトを見る」のクラスは<div class="sftr center">なのに、何故この余計な二つが取れるのでしょうか?
どうすればこの余計な二つを除いた結果が取得できますか?
0541nobodyさん
2008/12/28(日) 03:49:15ID:???って書けばよさそう。
いろいろ省かずに動くコードを gist に貼ってよ。
0542nobodyさん
2008/12/30(火) 07:46:25ID:???webブラウザにアドレスを入れて、CGIを直接叩いているのですが、HTMLを返さないので、
ちゃんと実行されるものの、当然500エラーになります。
シェルから走らせてるか、HTTPで走らせてるかを判別できるような環境変数などはありますか?
0543nobodyさん
2008/12/30(火) 08:02:24ID:???0545nobodyさん
2009/01/11(日) 00:46:35ID:???携帯メールの添付ファイルをimagemagickで変換→送信元へ返信
2: それでこんな風にやってみたが・・・
A.メール受信してスクリプトを起動(実装済)
B.添付ファイルを抽出
C.添付ファイルをimagemagickで変換
D.変換後添付ファイルを送信元へ送信
(BCDは同一モジュール)
3: こんなエラーが出て上手く行かなかった。
Bの添付ファイルを抽出する処理において、ひとまず添付ファイルを出力してみようとしたところうまくいきません。
変更前(テンポラリファイルを作成するバージョン)はうまくいくのですが、$parser->output_to_core(1);にすると
うまく動きません(正常終了するけどファイルは作られない)。単純にoutput_to_core(1);とするだけではだめなのでしょうか?
#!/usr/bin/perl
use File::Basename;
use MIME::Parser;
my $parser = MIME::Parser->new
#$parser->output_dir('/tmp'); ←コメントアウト
$parser->output_to_core(1); ←追加
my $entity = $parser->parse(\*STDIN);
if($entity->is_multipart){
$count = $entity->parts;
for($i = 1; $i < $count; $i++){
$path = $entity->parts($i)->bodyhandle->path;
$filename = (fileparse($path))[0];
open(FILE, "> /var/spool/mail/mail/$filename");
print FILE $entity->parts($i)->bodyhandle->as_string;
close(FILE);
}
}
http://www.ksknet.net/cat28/mimeparser.html
0546nobodyさん
2009/01/11(日) 23:01:08ID:lrs+Aq7Aどうすればいいですか?
#!/usr/bin/perl
use strict;
use Win32::Clipboard;
$| = 1;
my $clip = Win32::Clipboard();
$clip = $clip->GetText();
foreach (split(/\n/,$clip)) {
print $_;
sleep 1;
}
exit;
0547nobodyさん
2009/01/11(日) 23:10:54ID:???0548nobodyさん
2009/01/11(日) 23:52:30ID:lrs+Aq7Aどうしてだろう。
0549nobodyさん
2009/01/12(月) 00:50:30ID:???\nでsplitしたんだからそりゃそーでしょう。
print "$_\n";
0550nobodyさん
2009/01/12(月) 00:55:25ID:???何故かパイプが全角だった。,とか\は半角なのに。
perl-5.8.8-15.el5_2.1
0552nobodyさん
2009/01/12(月) 01:24:58ID:???バージョンによって違うのかねぇ。
0553nobodyさん
2009/01/12(月) 01:27:12ID:???でも\rだけで改行されんのかな
0554nobodyさん
2009/01/12(月) 01:55:27ID:???splitかけても、各行の最後に\x0dが付いていた。
結果、左に復帰するけど、下にフィードしない。
ただし、1秒ごとに出力はされる。
という感じです。
0555nobodyさん
2009/01/12(月) 10:07:30ID:???指摘されたように、print "$_\n";で応えてくれたので、
\r\nでsplitしました。
0556nobodyさん
2009/01/14(水) 11:55:48ID:OW2Unehdとある UFT-8 のファイルのデータを使って CSV ファイルを書き換えたいと思います。
そこで, まずCSV を読み込もうと
http://www.din.or.jp/~ohzaki/perl.htm#CSVwithCRLF
を参考に以下のソースを実行したのですが、何度やっても
「問題が発生したため、Perl Command Line Interpreter を終了します。 ご不便をおかけして申し訳ありません。」
というエラーが出て終了してしまいます。
+++++ソース+++++
use utf8;
use Encode;
open(DATA, '<', $entry_data_file) or die "entry_data does not exist.";
while (my $line = decode('CP932', <DATA>)) {
$line .= decode('CP932', <DATA>) while ($line =~ tr/"// % 2 and !eof(DATA));
$line =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/;
@values = map {/^"(.*)"$/s ? scalar($_ = $1, s/""/"/g, $_) : $_}
($line =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g);
}
close(DATA);
+++++++++++++++++++
decode の仕方がいけないのでしょうか??
教えてください!!
0557556
2009/01/14(水) 12:12:28ID:OW2Unehdサイズが大きすぎるということではないと思うのですが、
何か分かれば教えてください!
0558nobodyさん
2009/01/14(水) 12:37:25ID:???あとはbinmode(DATA)もやってみてはどうだろう。
EUCの場合も試してみては?
0559nobodyさん
2009/01/14(水) 12:47:48ID:???ここの行がだめな気がする
0560nobodyさん
2009/01/14(水) 13:32:39ID:???環境晒したほうがいいかもね。windowsっぽいメッセージなので俺は力になれ
んと思うけど。
558の言うようにbinmode使えというのは同意。IOレイヤ使った方がいちいち
自前でencode書くよりすっきりするよ。元のプログラムいじるとこも最小限に
なるし。
0561nobodyさん
2009/01/14(水) 17:04:33ID:???0562nobodyさん
2009/01/14(水) 17:10:52ID:???0563nobodyさん
2009/01/14(水) 17:13:41ID:???0564nobodyさん
2009/01/14(水) 17:38:35ID:???0565nobodyさん
2009/01/14(水) 18:25:51ID:???0567nobodyさん
2009/01/14(水) 19:02:59ID:???OSがWindowsなら、ローカルで動かしてるか専鯖なんだろうし、
ファイルを全部読んでからText::CSV_XSで処理した方が楽だろう。
0568nobodyさん
2009/01/14(水) 19:27:44ID:???満たさずにループから抜けるだろ
0569nobodyさん
2009/01/14(水) 19:32:15ID:???呆けてた。
0570nobodyさん
2009/01/14(水) 20:11:53ID:???これって decode の結果がループ条件でしょ?
ここを
while (my $line = <DATA>){
my $utf8str = decode('CP932', $line);
みたいに分けたほうが・・・
あと、<DATA> で回してるのに、その中で <DATA> で読み込むのはやめた方がいい
これは作り方が間違えてるとしか・・・
0571nobodyさん
2009/01/14(水) 20:55:18ID:???0572nobodyさん
2009/01/14(水) 21:10:32ID:VxBaEqTh0573nobodyさん
2009/01/15(木) 05:26:19ID:???0574nobodyさん
2009/01/16(金) 14:34:05ID:???動作環境が悪いのか
都市伝説が原因か
謎は深まるばかりです。
0575nobodyさん
2009/01/17(土) 23:31:05ID:???0576nobodyさん
2009/01/17(土) 23:48:40ID:???イメージ的にはこんな感じです。
package main;
sub Hoge::say_hoge = sub say_hoge {warn "hoge\n"}
Hoge::say_hoge();
0577nobodyさん
2009/01/18(日) 00:35:38ID:???#!/usr/bin/perl -w
use strict;
package Foo;
sub Bar::speak { __PACKAGE__, ' says ', uc pop, "\n" }
package Bar;
sub Foo::speak { __PACKAGE__, ' says ', lc pop, "\n" }
package main;
print Foo::speak('FOO'), Bar::speak('bar');
__END__
ただしこんな事をしなければいけないようなら設計が悪い。
0578nobodyさん
2009/01/18(日) 00:42:15ID:???0579nobodyさん
2009/01/18(日) 00:42:29ID:???0580nobodyさん
2009/01/18(日) 02:00:40ID:???code => sub {warn "hoge\n"},
into => 'Hoge',
as => 'say_hoge'
});
0582nobodyさん
2009/01/18(日) 14:33:21ID:???0584nobodyさん
2009/01/18(日) 23:39:26ID:???a
b
c
2.txtの中身
d
e
f
↓一行おきに2.txtの中身を挿入したい
a
d
b
e
c
f
先生教えて!
0585nobodyさん
2009/01/19(月) 00:00:53ID:???use warnings;
use FileHandle;
my $a = FileHandle->new("< a.txt");
my $b = FileHandle->new("< b.txt");
while (!$a->eof && !$b->eof) {
print $a->getline;
print $b->getline;
}
0586nobodyさん
2009/01/19(月) 00:20:53ID:???0587nobodyさん
2009/01/19(月) 00:46:38ID:???FileHandle なり何なりを使わない場合の利点があれば教えて欲しい。
0589nobodyさん
2009/01/19(月) 00:52:38ID:???0591nobodyさん
2009/01/19(月) 01:02:16ID:???use strict;
use warnings;
open my $txta, '<', 'a.txt' or die 'not found a.txt';
open my $txtb, '<', 'b.txt' or die 'not found b.txt';
while (defined (my $ta = <$txta>) and defined (my $tb = <$txtb>)) {
print $ta;
print $tb;
}
0592nobodyさん
2009/01/19(月) 08:55:47ID:???use strict; つけることすら無駄になるよね。
どうなのそれ。
0593nobodyさん
2009/01/19(月) 09:02:22ID:???0594nobodyさん
2009/01/19(月) 09:08:59ID:???strictはプラグマだから負荷かからないと思ってたけど違うの?
数値的にどれくらい負荷になるの?
0595nobodyさん
2009/01/19(月) 09:09:55ID:???use strict してなくてもかまわんかもしれんなw
0596nobodyさん
2009/01/19(月) 09:21:58ID:???以下コピペするよ
> ところで、気になるオブジェクト指向実装における Perl スクリプトの実行
> 速度ですが、Damian Conway 氏による『オブジェクト指向Perlマスターコー
> ス―オブジェクト指向の概念とPerlによる実装方法』の序章にこうあります。
>
> > 一般には、オブジェクト指向Perlによるシステムの実装は、それと等価の
> > 非オブジェクト指向実装よりも高速になることはなく、実際には比較して
> > 通常20〜50パーセントほど低速になる。
> > この数字はオブジェクト指向Perlから多くのユーザを遠ざけるほど十分に
> > 大きいかもしれないが、オブジェクト指向の設計面および実装面のそれを
> > 補うさまざまなり点を見逃すのは悲劇的である。
> > (中略)
> > 残念ながら多くの人は、「20〜50パーセントの低速化」という数字に惑わ
> > され、過去6か月間でプロセッサ速度が2倍になったにもかかわらず、何を
> > 意味しているか忘れがちになる。
0597nobodyさん
2009/01/19(月) 09:28:43ID:???(1) CGI を速度重視で修行のように書く perl
(2) Moose とか使う oop perl
のどちらかだと思う。
(1) で use strict なしとかだと首つるしかなくね?
0598nobodyさん
2009/01/19(月) 09:34:37ID:???世の中にはおかしな本もあるようでwww
0599nobodyさん
2009/01/19(月) 09:37:37ID:???俺には無理。
0600nobodyさん
2009/01/19(月) 09:44:29ID:???「趣味のプログラムだから、最悪バグっても構わない」
的なこと書いて逃げるよね。
どうしようもない奴らであることは確かだな。
馬鹿はおとなしくマークアップエンジニアとかやってればいいのにな。
0601nobodyさん
2009/01/19(月) 11:17:25ID:???0602nobodyさん
2009/01/19(月) 12:00:06ID:???0603nobodyさん
2009/01/19(月) 12:03:05ID:???つまんないから馴れ合い irc で引きこもっとけよ。
0606nobodyさん
2009/01/19(月) 12:49:52ID:???httpdから見えるところに置いてるのか
0607nobodyさん
2009/01/19(月) 12:52:42ID:???売り上げ毎に個別のID付けて、売り上げデータだけサーバに残し、
個人情報は残さない。
個人情報+個別IDをメールで自分に送る。
0608nobodyさん
2009/01/19(月) 13:11:12ID:???レンタル鯖なんだから、httpdから見えないところには置けない・・・と思う。
>>607
メールで個人情報送るのって、案外危ないのでは?
俺は客宛に自動送信するメールにも、住所とかは完全な形では書かないよ
0614nobodyさん
2009/01/19(月) 13:29:05ID:???レン鯖を使うのが今の俺に取ってはベターだとは思ってる。
最悪、なにか事故が起こったら謝ってしまえばいいだけ。
本題に戻れば、カートをどんな方法で動かしてるかとか、内部仕様的なところは客には見えないから、
ちょっと見栄えのする画面だったら何でもいいんだよw
まあレン鯖だということは分かっちゃうことになるけど、そんなこといちいち調べて買い物しないでしょ?
0616612
2009/01/19(月) 13:36:00ID:???0617nobodyさん
2009/01/19(月) 13:36:40ID:???> 内部仕様的なところは客には見えないから、
どこかで配布されてるスクリプトをちょっといじっただけの程度なら
内部仕様バレバレでっせw
もうすでに流出してるかもわからんね。
クレカの大量不正利用がある日起こってみんな気がつくとw
0619nobodyさん
2009/01/19(月) 13:38:54ID:???客のIDとパスワードが、何らかの理由で漏れたときに、注文時のメールアドレス変えて
第三者に漏れる可能性があるかなという理由なんだよ。
0620nobodyさん
2009/01/19(月) 13:40:17ID:???スクリプトは1から自分で書いたよ。だから怪しいわけだけどw
クレカなんて扱わないよ、そこまで大規模なら、システムにも金かけるでしょ。
0621nobodyさん
2009/01/19(月) 13:40:25ID:???0622nobodyさん
2009/01/19(月) 13:41:33ID:???クレカ扱うと大規模なの?w
0623612
2009/01/19(月) 13:49:40ID:???そーゆー事か。
うちは、会員制(登録制)にしていないから、IDもPASSも無い。
>>618
大概はいいすぎたか。うちはメールサーバーと自宅の間は大丈夫。
ttp://www.rhein-strasse.de/blog/2004/06/19/becky2-ssl-tls/
0624nobodyさん
2009/01/19(月) 13:54:25ID:???でも常連客でも会員登録してくれない客はいるね。
弱小だから、信用されてないのは仕方ないけど。
でも、会員登録の有無は関係なく、個人情報がサーバーに残ってることを客は知らんわなw
0625nobodyさん
2009/01/19(月) 13:57:51ID:???客を馬鹿だと思ってるの?
キミは何も知らないようだから、クラックされるなり変な script 注入されるなりして痛い目にあえばいいと思う。
0626nobodyさん
2009/01/19(月) 14:00:50ID:???店宛にエラーの内容をメール送信する機能つけてるわ
0627nobodyさん
2009/01/19(月) 14:05:36ID:???とか言う人が
> そういえば、つまらない対策だけど、想定外の動作をしたときに、
> 店宛にエラーの内容をメール送信する機能つけてるわ
そんな機能つけてどうするの?自信ないの?腰抜けなの?
0628nobodyさん
2009/01/19(月) 14:11:06ID:???Amazonは余裕で個人情報+購入商品のメール送ってくるのなw
0631nobodyさん
2009/01/19(月) 14:21:51ID:???0632nobodyさん
2009/01/19(月) 14:26:19ID:???0633nobodyさん
2009/01/19(月) 14:28:12ID:???本当は住所は書いたメールを送りたい。間違えて入力する客がたまにいるから。
でも、住所を書くことのリスクを負うことを考えると、やっぱり書けないね。
間違えて入力する客が悪いんだし。
0634nobodyさん
2009/01/19(月) 14:29:26ID:???> 間違えて入力する客が悪いんだし。
論理が一貫していませんよ。
0636nobodyさん
2009/01/19(月) 14:41:05ID:???「クラックしてみろ」とか「保存してある個人情報抜けるなら抜いてみろ」とか
ほしいものだ。
結局小心者の腰抜けなんですね。わかります。
0637nobodyさん
2009/01/19(月) 15:40:28ID:???・配布スクリプトは使わない
・プレーンテキストで保存しない
・ファイルならhttpdから見えないところに置く
・メールに個人情報は載せない
・事故が起こったら謝る
こんな感じにすればいいってことですか?
0638nobodyさん
2009/01/19(月) 15:50:20ID:???0639nobodyさん
2009/01/19(月) 15:50:35ID:???0640nobodyさん
2009/01/19(月) 17:04:42ID:???を追加してくれw
ttp://slashdot.jp/article.pl?sid=07/12/15/0035257
0642nobodyさん
2009/01/19(月) 19:02:39ID:???みんなバカなのか?わざとだろ?
0643nobodyさん
2009/01/19(月) 20:24:49ID:???0644nobodyさん
2009/01/19(月) 20:44:17ID:???0645nobodyさん
2009/01/19(月) 20:47:03ID:???ここより過疎で雑談に適したスレは他にも沢山あるから
自由にリサイクルしてくれ。
【総合】 Webprog板質問雑談スレッド 1
http://pc11.2ch.net/test/read.cgi/php/1131016915/
コレカラWebProgオ勉強シヨウトシテル香具師ガ雑談スルスレ
http://pc11.2ch.net/test/read.cgi/php/1049476765/
0646nobodyさん
2009/01/20(火) 01:15:18ID:???中級者向けの本を教えてくだしあ。基礎やcpan巡りはできるようになったけど、その先、みたいな。
0647nobodyさん
2009/01/20(火) 01:30:22ID:???0648nobodyさん
2009/01/20(火) 01:41:50ID:???皆さんだったらどんなのを使います?
自分は今、SOAPとかってどうなんだろう?と思ってるしだいです。
最悪返すデータが格納されてるURLを投げる方向だったりしますがw
0652nobodyさん
2009/01/20(火) 20:20:07ID:???0653nobodyさん
2009/01/21(水) 03:44:02ID:eckl057E{
package Hoge;
use strict;
use warnings;
sub sub1 { print "sub1\n" }
}
{
package main;
use strict;
use warnings;
no strict 'refs';
my $hoge1 = *{"Hoge::sub1"};
$hoge1->();
my $class = 'Hoge';
my $hoge2 = *{"$class::sub1"};
$hoge2->();
}
# 前者が上手くいき、後者が上手くいかない理由と、
# 後者の代替となる方法を教えて頂けないでしょうか?
0654nobodyさん
2009/01/21(水) 04:53:39ID:???そして馬鹿 perler と呼ばれるわけですね。
0656nobodyさん
2009/01/21(水) 09:03:09ID:???my $hoge2 = *{"$class\::sub1"};
0657nobodyさん
2009/01/21(水) 10:38:00ID:dhsSLEKy0658nobodyさん
2009/01/21(水) 10:43:42ID:???0660nobodyさん
2009/01/21(水) 16:59:05ID:???0661660
2009/01/21(水) 17:03:30ID:???書き換えて、そのアプリを再起動させたいのです。
0662nobodyさん
2009/01/21(水) 17:33:53ID:???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入門
http://www.amazon.co.jp/dp/4798119172/
0670nobodyさん
2009/01/23(金) 15:30:04ID:???0671nobodyさん
2009/01/23(金) 15:50:35ID:???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:???(2)加工→表示
0677nobodyさん
2009/01/26(月) 18:31:56ID:???0678nobodyさん
2009/01/26(月) 18:35:41ID:???いえ、例えば、
http://〜.jpg、500*500
の画像を取得し、250*250にして表示したいと思っています。
0679nobodyさん
2009/01/26(月) 18:39:29ID:???0680nobodyさん
2009/01/26(月) 18:50:54ID:???どれがわからんの?
0681nobodyさん
2009/01/26(月) 18:55:35ID:???加工と、表示の仕方がわかりません。
0682nobodyさん
2009/01/26(月) 18:56:56ID:???0683nobodyさん
2009/01/26(月) 18:57:01ID:???LWP で取得したイメージが内部でイメージに変換できなくて困ってるってやつで自分が回答した記憶がある
BlobToImage でググってみれば、取得から表示までのサンプルが出てくると思う
0685nobodyさん
2009/01/26(月) 19:01:36ID:???GDもしくはImageMagickあたりかな
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:???どういったモジュールを使うのがお薦めでしょうか?
0693nobodyさん
2009/01/28(水) 12:09:29ID:???XML::Parser
XML::Atom
XML::Feed
etc
0694sage
2009/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:???0696694
2009/01/29(木) 22:41:07ID:???system("notepad");
system("notepad");
こうすると1つ目の終了まで待機するようなのですが、
待機しないで3つ起動するにはどうすればいいでしょうか。
0697nobodyさん
2009/01/29(木) 22:49:17ID:???モダンな方法はあるのだろうか。
0698nobodyさん
2009/01/29(木) 23:01:27ID:???自分で>>694に書いてるけど
system("start", "notepad"); #これを3つ起動でしょ
0700nobodyさん
2009/01/30(金) 00:30:25ID:???0702nobodyさん
2009/01/30(金) 03:11:15ID:???0703nobodyさん
2009/01/30(金) 08:17:29ID:???たとえで出してたのかと思った。
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:???0714nobodyさん
2009/01/31(土) 20:28:20ID:???単刀直入すぎ。
それは出来ないけど、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:IExMyMgz0719nobodyさん
2009/01/31(土) 21:16:46ID:???・どういう風にサブルーチンが作動していないことを確認したのか
まさかこのプログラムをa.cgiとかにしてCGIで実行しているんじゃないよな・・・?
0720nobodyさん
2009/01/31(土) 21:18:18ID:???0721nobodyさん
2009/01/31(土) 21:25:24ID:IExMyMgzそうです。
0722nobodyさん
2009/01/31(土) 21:47:12ID:???初心者っぽいから言っておくが
サブルーチンの動作を省略せずにきちんと書いてみ
そしたらそのプログラムに何が足りないかすぐわかるはずだ。
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:???0727nobodyさん
2009/02/01(日) 00:24:54ID:???0729nobodyさん
2009/02/01(日) 02:37:45ID:8RIm5WuxPython 3が後方互換性を捨ててでも求めたもの
ttp://www.atmarkit.co.jp/fcoding/articles/python3/01/python301a.html
0730nobodyさん
2009/02/01(日) 03:03:40ID:???ttp://d.hatena.ne.jp/seiunsky/20080417/1208454191
0732nobodyさん
2009/02/01(日) 04:55:13ID:???この状況と同じです。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はどれが必要なのでしょうか?
まだサンプルプログラムが動かない状態です。よろしくお願いします。
0733732
2009/02/01(日) 05:20:39ID:???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だけ入れればいいんでしょうか。。。
0734732
2009/02/01(日) 05:44:24ID:???ここに書いてあるコマンド直接書いてみたらできました。
>ppm install http://cpan.uwinnipeg.ca/PPMPackages/10xx/DBD-mysql.ppd
サンプルプログラムも動きました。
リポジトリに追加したときURLが間違っていたので
DBD-mysqlが無かったのかもしれません。
0735nobodyさん
2009/02/02(月) 10:41:30ID:WfkTEh9pソースコードしか手に入らず困り果ててます
コンパイル済みのmod_perlはどこで入手できますでしょうか?
0736nobodyさん
2009/02/02(月) 11:11:06ID:???0738nobodyさん
2009/02/02(月) 11:46:24ID:???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:qwoAnWRh0743nobodyさん
2009/02/02(月) 14:39:45ID:???0744nobodyさん
2009/02/02(月) 14:48:06ID:???\nがひとつだと500エラーになったのはそういうこだったんですね
ありがとうございました
0745nobodyさん
2009/02/02(月) 16:35:52ID:P7XLmGHa$buf1 = "$a[0]","&","$a[1]";
↑とりあえずこの表記は正しいでしょうか?
0746nobodyさん
2009/02/02(月) 16:47:09ID:???0747nobodyさん
2009/02/02(月) 17:03:56ID:???0748nobodyさん
2009/02/02(月) 18:11:38ID:???0749nobodyさん
2009/02/02(月) 18:24:35ID:???ローマ字をひらがなに変換しようとしています。
コマンドラインだと
$ 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" と
なってしまうのでしょうか?
0752nobodyさん
2009/02/02(月) 19:05:10ID:???で Win コンソールででけたよ
0753nobodyさん
2009/02/02(月) 19:13:08ID:???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:???しかし動かない理由も気になります周辺のコードです。
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]";
ちなみにこれです。これが動きません
0756nobodyさん
2009/02/02(月) 20:00:19ID:???{ に対応する } がないし、変数とおぼしきところに $ とかがないので、
今のままだと動かないと思う。
use strict; をスクリプトの一番最初に書くと、文法チェックしてくれるよ。
どんな理由があろうとも use strict; をつけるのは perl の基本だから、
その上でがんばってほしいです。
出てきそうな質問に答えておくと、"" で囲まれた中に @ を含めたいときは
\@ にするか、"" をやめて '' でくくったりする。
0757nobodyさん
2009/02/02(月) 20:03:10ID:???0758749
2009/02/02(月) 20:24:03ID:???おっしゃる通りでした。Lingua::JA::"K"ana に直したらちゃんと動きました。
典型的なケアレスミスでお恥ずかしいかぎりです。
最初 use kana; とだけ書いたときに出ていた Can't locate kana.pm in @INC
のエラーが、use Lingua::JA::kana; と書いたら出なくなったので、
この部分は通っているものと思い込んでいました。
ここできかなかったらずっとわからなかったと思います。
どうもありがとうございました。
>>752
わざわざ試していただいてありがとうございます。
そうすれば文字コードの指定も同時にできるんですね。
そちらを使わせていただくことにします。どうもありがとうございました。
0760nobodyさん
2009/02/02(月) 21:17:04ID:???&a
sub b{
}
}
このサブルーチンの使い方は間違っていますか?
0762nobodyさん
2009/02/02(月) 23:25:18ID:???0764nobodyさん
2009/02/02(月) 23:58:27ID:???この記述はあってますか?
いったいどこが悪くて動かないのかわからないので総当り中。
0768nobodyさん
2009/02/03(火) 00:12:39ID:???だと
@a[0..9] = @b[0..9];
になる気がする。
@a[1..9] = @b[1..9];
か。脳内だけど。
0769nobodyさん
2009/02/03(火) 00:19:34ID:???shift(@a);
unshift(@a, $b[0]);
0770nobodyさん
2009/02/03(火) 00:57:59ID:???0771nobodyさん
2009/02/03(火) 01:03:32ID:???0772nobodyさん
2009/02/03(火) 01:56:59ID:???a[0]ならスカラーだから$なのと一緒
0773nobodyさん
2009/02/03(火) 02:11:03ID:???実は一貫してアクセスの種類示すものとして使われている。
$aaa; #「スカラー変数aaa」ではなくて「スカラー名aaaへのアクセス」
>>770
オブジェクトじゃなければ、だいたいそう。
ひねくれ作者だったら知らん。
0777nobodyさん
2009/02/03(火) 14:40:43ID:???過去ログを読んだり、検索してはいけない。
「英語は苦手なので、分かりません。」は、高く評価できる。
辞書片手にマニュアルやReadMeを読むなど、決してしてはならない。
他力本願と言われようと、自分で調べたり試行錯誤したりせず、他人の努力の結果を搾取するのが、正しい「教えてクン」である。
また、「もう何が悪いのかサッパリ分かりません。」と言ってふてくされるのも有効である。
「サッパリ」という単語が「やる気の無さ」を効果的に表現している。
「原因を特定するには、何をすべきでしょうか?」と訊いてしまうと自己の積極性が現れてしまうので、「教えてクン」失格である。
0780nobodyさん
2009/02/03(火) 19:46:43ID:???unshift (@a , 1) ;
この記述はあってますか?、それと日本語使えてウインドウズに入るPerlって売ってますか?
0782nobodyさん
2009/02/03(火) 20:55:27ID:???0783nobodyさん
2009/02/03(火) 20:57:12ID:???0784nobodyさん
2009/02/03(火) 21:29:51ID:???> この記述はあってますか?、それと日本語使えてウインドウズに入るPerlって売ってますか?
use strict;
use warnings;
の 2 行を、perl スクリプト全部の先頭に付けると、
記述があってるかどうかおしえてもらえるよ。
Windows に入る perl は、ActivePerl というのと Strawberry Perl の
2 つがあるよ。
0785nobodyさん
2009/02/03(火) 21:35:22ID:???0786nobodyさん
2009/02/03(火) 21:38:31ID:???0787nobodyさん
2009/02/03(火) 23:31:26ID:???0788nobodyさん
2009/02/04(水) 00:12:55ID:???Winで使わないならWinで開発しないだろ、jk
0789nobodyさん
2009/02/04(水) 00:28:31ID:???0790nobodyさん
2009/02/04(水) 00:30:49ID:???弄った後にWin鯖は入れ替えでRHELに入れ替わってたな
0791nobodyさん
2009/02/04(水) 01:09:23ID:???0792nobodyさん
2009/02/04(水) 01:24:33ID:???0793nobodyさん
2009/02/04(水) 03:05:51ID:???http://0ch.mine.nu/public/scripts/
スレッド一覧( ./subback.html )にもmeta.txtの内容を書き込もうと思い
いろいろ弄ってなんとか形になりました。※meta.txtは掲示板を作って自分で書き込めます。
しかし、これでよいのかどうか自信がもてないため質問します。
varda.plの191
sub CreateSubback{ } 内に
require('./module/legolas.pl');
$Caption = new LEGOLAS;
META($this,$Index,$Caption);
151# HTMLヘッダの出力
$Caption->Print($Page,undef);
他に
sub META{
my ($this,$Page,$Caption) = @_;
my ($title,$link,$image,$code);
$Caption->Load($this->{'SYS'},'META');
}
ミスはないでしょうか?
0794nobodyさん
2009/02/04(水) 04:42:54ID:???★三 【 スクリプト改造工房 PART 9 】 ★三
http://pc11.2ch.net/test/read.cgi/php/1143834740/
0797nobodyさん
2009/02/04(水) 07:09:52ID:???@a = @b
shift(@a) ;
unshift (@a , 1) ;
この表記でバグってるような気がします
ちなみにjperl日本語版をベクターでダウンロードしましたがインストーラーが見当たりません。
ウインドウズで開発環境を作るにはどうしたらよいのでしょうか?
0798nobodyさん
2009/02/04(水) 11:33:59ID:???unshift(@a , 1);
第二引数は配列でアレ!
0799nobodyさん
2009/02/04(水) 21:14:31ID:???> この表記でバグってるような気がします
http://www.e777.co.jp/perlcw/perlcw.html
> ウインドウズで開発環境を作るにはどうしたらよいのでしょうか?
http://www.activestate.com/activeperl/
0800nobodyさん
2009/02/04(水) 23:10:49ID:???0801nobodyさん
2009/02/05(木) 07:17:41ID:???0802nobodyさん
2009/02/05(木) 09:39:18ID:???0803nobodyさん
2009/02/05(木) 10:22:36ID:???> strict.pmが鯖に必ずしも入っていなかったからだと思うよ
そういう鯖って今もあるの?
あるとして使う積極的な理由は見つからない。
use strict; しないスクリプトは消えるべきかと。
0804nobodyさん
2009/02/05(木) 10:33:23ID:???0805nobodyさん
2009/02/05(木) 10:37:35ID:???-Tオプション
use strict;
use warnings;
つけるけど、納品するときは外すよ
0807nobodyさん
2009/02/05(木) 11:20:17ID:???納品前に外す趣旨の発言は、この板で何度か出てきてるね。
外すと書くだけで、合理的な理由を示さない人だから、構わない方が良いよ。
0810nobodyさん
2009/02/05(木) 12:15:13ID:???http://0ch.mine.nu/public/scripts/
スレッド一覧( ./subback.html )にもmeta.txtの内容を書き込もうと思い
いろいろ弄ってなんとか形になりました。※meta.txtは掲示板を作って自分で書き込めます。
しかし、これでよいのかどうか自信がもてないため質問します。
varda.plの191
sub CreateSubback{ } 内に
require('./module/legolas.pl');
$Caption = new LEGOLAS;
META($this,$Index,$Caption);
151# HTMLヘッダの出力
$Caption->Print($Page,undef);
他に
sub META{
my ($this,$Page,$Caption) = @_;
my ($title,$link,$image,$code);
$Caption->Load($this->{'SYS'},'META');
}
ミスはないでしょうか?
0811nobodyさん
2009/02/05(木) 12:21:03ID:???お母さんのおっぱい揉みながら聞いてみるといいよ
0812nobodyさん
2009/02/05(木) 12:22:33ID:???0813nobodyさん
2009/02/05(木) 12:23:39ID:???0814nobodyさん
2009/02/05(木) 12:42:41ID:???0816nobodyさん
2009/02/05(木) 13:33:51ID:???0817nobodyさん
2009/02/05(木) 14:00:44ID:???http://d.hatena.ne.jp/lapis25/20090204/1233757194
両エントリktkr
0819nobodyさん
2009/02/05(木) 16:35:05ID:???> 可能性がゼロじゃないわけで。
これについて、何の可能性なのかよくわかんないんだよね。
>>801 でいう「strict.pmが鯖に必ずしも入っていな」い可能性がゼロなのか、
use strict; use warnings; したときに出てしまうメッセージを潰しきれない
のがゼロなのか。
> ログはきまくるっていうのもあるのかな
そもそも何のログが出てくるのかと。
use strict; use warnings; しているときに何か出てくるのであれば、
それは必ず潰さなければらなない。
そんなものが出てくる時点で何かおかしいことをしている。
例外的に、わかってておかしいことをしたい場合は、その箇所に関しては、
個別的に黙らせればよい。
0820nobodyさん
2009/02/05(木) 16:42:43ID:???0821nobodyさん
2009/02/05(木) 16:44:10ID:???外してもう一回テストやるの?面倒くさくない?
0822nobodyさん
2009/02/05(木) 16:49:06ID:???どのくらいの時間がかかるの?
ベンチとか取ってるのなら見てみたい。
0825nobodyさん
2009/02/05(木) 17:07:07ID:???1000 回まわしてトータルで 0.3 秒の差だね。
行数多くなると少し変わるんだろうけど、この小さな差をどうにかしないと
いけない状況って本当にあるの?
# --- run.sh
#!/bin/bash
time bash call_strict.sh
time bash call_no_strict.sh
$ bash run.sh
real 0m5.904s
user 0m3.828s
sys 0m1.824s
real 0m2.561s
user 0m1.116s
sys 0m1.784s
# --- call_strict.sh
#!/bin/bash
for x in `seq 1 1000`; do
perl call_strict.pl 2>/dev/null 1>/dev/null
done
# --- call_no_strict.sh
#!/bin/bash
for x in `seq 1 1000`; do
perl call_no_strict.pl 2>/dev/null 1>/dev/null
done
0826nobodyさん
2009/02/05(木) 17:07:48ID:???#!/usr/bin/perl
use strict;
use warnings;
my ($a, $b, $c);
$c = 10;
$a = 100;
$b = "fuck";
$a = $b + $c;
# --- call_no_strict.pl
#!/usr/bin/perl
$c = 10;
$a = 100;
$b = "fuck";
$a = $b + $c;
0827nobodyさん
2009/02/05(木) 17:17:53ID:???0828nobodyさん
2009/02/05(木) 17:54:21ID:???0829nobodyさん
2009/02/05(木) 18:33:37ID:???0830nobodyさん
2009/02/05(木) 18:39:27ID:???0831nobodyさん
2009/02/05(木) 18:41:08ID:???0832nobodyさん
2009/02/05(木) 19:56:17ID:???0833nobodyさん
2009/02/06(金) 01:05:07ID:???0834nobodyさん
2009/02/06(金) 02:46:43ID:???0835nobodyさん
2009/02/06(金) 03:03:25ID:???計測したことがないけど、warning.pmは重くてstrict.pmはほとんど負荷がない、とドキュメントに書いてあったと思う。
だから俺はuse strictして、-wオプション付きでテストさせている。
0836nobodyさん
2009/02/06(金) 03:09:28ID:???0837nobodyさん
2009/02/06(金) 09:50:05ID:???0838nobodyさん
2009/02/06(金) 12:54:45ID:???外して焦ってサポートに電話してくりゃ、そりゃ商機なんですよw
下手に改造されてワーニング放置で動かされて、とある日にぼろぼろのソースを直せと言われるより、
早期にワーニング出てもらって、修正依頼に対して「そちらが勝手に改造したので新規料金相当頂きます」のほうがいいんですよ
ちったぁ考えろって
0839nobodyさん
2009/02/06(金) 13:15:50ID:???「納品時には use strict; use warnings; を外す」
でよろしいな?
0840nobodyさん
2009/02/06(金) 13:27:58ID:???0841nobodyさん
2009/02/06(金) 14:26:30ID:???0843nobodyさん
2009/02/06(金) 14:58:25ID:???0845nobodyさん
2009/02/06(金) 15:22:58ID:???0851nobodyさん
2009/02/06(金) 15:37:21ID:???0853nobodyさん
2009/02/06(金) 16:29:24ID:???0ならば、登録フォームを表示させない。
1か0かは、管理人用ページから設定することができる。 という感じでPerlを組みたいのですが、
まだまだ初心者でよく分かりません。
一応、
<input type=radio name=bosyu value=1>表示する
<input type=radio name=bosyu value=1>表示しない
というフォームを作り、登録フォームの表示部分に、
if ( $bosyu == 1 ){
#登録フォーム
}
else {}
というようにしました。
しかし、管理人画面から1にしようが0にしようが、登録フォームはどのみち消えてしまいました。
この場合、どうしたらよいのでしょう?;
0854853
2009/02/06(金) 16:30:28ID:???正しくは、
<input type=radio name=bosyu value=0>表示しない
でした。申し訳ありませんが、ご教示願いますm(_ _)m
0855nobodyさん
2009/02/06(金) 16:36:45ID:???URLデコード的なものをしてないんじゃ?
0856nobodyさん
2009/02/06(金) 16:46:23ID:???ありがとうございます。m(。。;)m
URLデコード・・・ですか?今から検索かけてみます;
もしよろしければ、
http://www.77c.org/d.php?f=nk5918.lzh
に本体をアップロードしましたので、修正箇所など教えていただけますと助かります。
私自身が追加しましたのは、行381,行382,行678,行683,行684 になります。
0857nobodyさん
2009/02/06(金) 16:51:07ID:???0858nobodyさん
2009/02/06(金) 17:05:24ID:???ってやりたいなら明示的に int(入力値) ってやったほうがいい
でなけりゃ 0 or 1 じゃなくて TRUE or FALSE にして、eq を使うとか
0859nobodyさん
2009/02/06(金) 17:08:50ID:???ありがとうございます。
やってみましたが、やはり0,1に関わらず登録フォームが消えてしまいました;
>>858 さん。
ありがとうございます。
今からやってみたいと思います。
0861nobodyさん
2009/02/06(金) 17:33:20ID:???http://pc11.2ch.net/test/read.cgi/php/1143834740/
0862nobodyさん
2009/02/06(金) 17:36:41ID:???0863nobodyさん
2009/02/06(金) 19:09:08ID:???そんなこと無いだろうさすがに
と思ったけど、これは酷いw
$bosyu 自体読み込みしてないけりゃ、$bosyu じゃなくて bosyu とかなってる始末
ログにはコメントしか出力してないし、CGI 君はどうやって表示するしないのフラグを知ればいいの?
もっと流れを知ったほうがいい。
あと、このスクリプトは酷いので別のを使ったほうがいい
0864nobodyさん
2009/02/06(金) 19:13:45ID:???strictすると駄目なので、ログから取得
Unquoted string "bosyu" may clash with future reserved word at 〜.cgi line 681
Name "main::e" used only once: possible typo at 〜.cgi line 538
Name "main::msg" used only once: possible typo at 〜.cgi line 210
Name "main::s" used only once: possible typo at 〜.cgi line 538
Name "main::c" used only once: possible typo at 〜.cgi line 538
Name "main::isdst" used only once: possible typo at 〜.cgi line 145
Name "main::yday" used only once: possible typo at 〜.cgi line 145
Name "main::sec" used only once: possible typo at 〜.cgi line 145
Use of "do" to call subroutines is deprecated at ./jcode.pl line 328
Use of uninitialized value $FORM{"action"} in string eq at 〜.cgi line 226
Use of uninitialized value $FORM{"action"} in string eq at 〜.cgi line 226
Use of uninitialized value $FORM{"action"} in string eq at 〜.cgi line 226
Use of uninitialized value $FORM{"com"} in substitution (s///) at 〜.cgi line 231
Use of uninitialized value $FORM{"com"} in substitution (s///) at 〜.cgi line 231
Use of uninitialized value $FORM{"action"} in string eq at 〜.cgi line 153
Use of uninitialized value $FORM{"action"} in string eq at 〜.cgi line 153
Use of uninitialized value $FORM{"action"} in string eq at 〜.cgi line 153
Use of uninitialized value $FORM{"action"} in string eq at 〜.cgi line 153
Use of uninitialized value $FORM{"action"} in string eq at 〜.cgi line 153
Use of uninitialized value $FORM{"action"} in string eq at 〜.cgi line 153
Use of uninitialized value $FORM{"action"} in string eq at 〜.cgi line 191
Argument "bosyu" isn't numeric in numeric eq (==) at 〜.cgi line 681
0865853
2009/02/06(金) 19:19:01ID:???私自身で追加した行は酷いと言われても仕方が無いと思っていましたが、
スクリプト自体が酷い となるとびっくりです。
ただ、今の私にピッタリのPerlスクリプトなので、どうしてもこれを使いたいのですが・・・
今まで色々と検索かけてみたり、ソースを変更してみたりしたのですが、
やはり私一人の力ではどうしようもできません・・・
もしよろしければ皆さんの「ここをこうすればいい」などの意見を参考にしたいです。
厚かましい願いではありますが、どうかご教示して頂けませんか?;
0866nobodyさん
2009/02/06(金) 20:12:20ID:LbIRe9/Sどこのサーバで動作させるつもりかもわからないけどCGI.pmが入ってること期待して。
use CGI;
my $q = new CGI;
my $is_visible = $q->param('bosyu');
if ($is_visible) {
登録フォーム表示コード
}
で、いけるんじゃね?
0867nobodyさん
2009/02/06(金) 20:37:48ID:???ありがとうございます。
CGI.pmは先ほど試したのですが、使うとCGI自体の動作がおかしくなってしまうので
使えませんでした。
サーバーはWinXPのApache2で、Perl5を使用しています。
0870nobodyさん
2009/02/06(金) 21:08:43ID:LbIRe9/SCGI.pmでおかしくなるとは考えにくいけど。
use CGI は2行目あたりにきちんとかいてる?
0871nobodyさん
2009/02/06(金) 21:18:08ID:???はい、
use CGI; を2行目に挿入した時点では正常に動作していますが、
3行目以降で
my $q = new CGI;
my $is_visible = $q->param('bosyu');
を挿入しますと、サブルーチンで作った画面へアクセスすることが出来なくなってしまいます。
>>856のスクリプトですと、管理画面等に入ることが出来なくなります。
その際、エラー文を吐き出すことは無く、画面が変わらずトップページのまま といった感じです。
0872nobodyさん
2009/02/06(金) 21:37:53ID:LbIRe9/Sそれなら
&decodeの下にその2行をいれてみて。
それでだめなら、decodeファンクションをかきかえないといけないかな。
0874nobodyさん
2009/02/07(土) 01:10:56ID:???親が使える関数は全て子供も使えるのでは?
0875nobodyさん
2009/02/07(土) 01:24:33ID:???既存の配布スクリプトをちょっくら改造しようと思ったのですが、
フォームの内容が空の時のみ処理をするといった部分
if( hogehoge eq "" ) {
#処理
}
これに加えてフォームの内容が特定の内容の場合も処理をするべく
if( hogehoge eq "" || hogehoge eq = "関東") {
#処理
}
このようにやったのですがフォームの内容が関東でも処理してくれません。
日本語がまずいのでしょうか?
どうか解決策をご教授くださいませ。
0877nobodyさん
2009/02/07(土) 01:31:18ID:???だとしたら、hogehogeの内容をprintしてみては?
0878nobodyさん
2009/02/07(土) 01:37:04ID:???0879nobodyさん
2009/02/07(土) 02:13:03ID:Bz2XlMXfをインストールして、Cからコンバートできるらしいとの情報をみつけたので
hoge.cをつくろうと、
C:\Perl\binへhoge.plをおき
プロンプトで
C:\Perl\bin>perl -MO=C hoge.pl > hoge.c
を実行したところ
Can't locate B/C.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at (
eval 1) line 18.
BEGIN failed--compilation aborted at (eval 1) line 18.
BEGIN failed--compilation aborted.
とでるのですが、どうやってやればよいのか非常に困っています。
どなたか何卒よろしくおねがいいいたします。
0880875
2009/02/07(土) 03:07:36ID:???自己解決しようとバグフィックスして、
結果文字コードが不全だったようで
変数の文字コードを変換したら無事に動きました。
お騒がせすみませんでした。
0881nobodyさん
2009/02/07(土) 04:10:24ID:???B/C.pmは5.10から標準で無くなった。
B/C.pmを入れるか、5.8系にするかしろ。
…でも正直それだけの価値は無いよ。
コンバートが上手く行くのは、すげえ初歩のスクリプトのみ。
0883nobodyさん
2009/02/07(土) 06:59:37ID:???>>873
Perlのオプション知らないの??>>852の書いてあるのはバラしたら
-w
-T
-c
各々のオプションを一々チェックするのは時間のムダ
上のオプションを繋げて書くと
-wTc(順番は書く人によって変わる、例えば-cwTや-Tcwなんかでもおk)
必要なオプションをつけてテストするのは当然の事だが
-Tオプション知らなかったり、オプションを繋げて書くのを知らなかったり(オプションだと気付いてない?)
少しは勉強してからPerlやれよ
0885nobodyさん
2009/02/07(土) 08:07:35ID:???0889nobodyさん
2009/02/07(土) 09:23:04ID:???0891nobodyさん
2009/02/07(土) 14:01:02ID:???45 -> 45
130 -> 2:10
3601 -> 1:00:01
どうしたらいいでしょうか?
DateTime->new(second => 4032)とかしたらyearとかも入れろって怒られました。
0892nobodyさん
2009/02/07(土) 14:10:32ID:???0893nobodyさん
2009/02/07(土) 15:08:36ID:???#!/usr/bin/perl -w
use Scalar::Util qw(looks_like_number);
use strict;
sub sec2hhmmss {
my $sec = int(looks_like_number($_[0]) ? $_[0] : 0);
my $min = int($sec / 60); $sec %= 60;
my $hour = int($min / 60); $min %= 60;
my $time = join ':', map sprintf('%02d', $_), $hour, $min, $sec;
$time =~ s/^[0:]+//;
$time || 0;
}
print map sec2hhmmss($_) . "\n", (
45, 130, 3601, 86420, 'seconds', undef,
);
__END__
0894nobodyさん
2009/02/07(土) 16:20:40ID:dq0WM+XPhoge.cをつくろうとC:\Perl\binへhoge.plをおき プロンプトで
C:\Perl\bin>perl -MO=C hoge.pl > hoge.c を実行したところ
Starting compile
Walking tree
Prescan
Tie::StdHash has method TIEHASH: saving package
Tie::Hash has method new: saving package
Tie::ExtraHash has method TIEHASH: saving package
Regexp has method DESTROY: saving package
Errno has method TIEHASH: saving package
Exporter saved (it is in Errno's @ISA)
Net::Ping has method new: saving package
Net::Telnet has method new: saving package
IO::Socket::INET saved (it is in Net::Telnet's @ISA) IO::Socket saved (it is in IO::Socket::INET's @ISA) IO::Handle saved (it is in IO::Socket's @ISA)
POSIX::SigAction has method new: saving package POSIX::Termios has method new: saving package POSIX::SigSet has method new: saving package POSIX::SigRt has method new: saving package
Saving methods
No definition for sub Fcntl::O_LARGEFILE
No definition for sub Fcntl::O_LARGEFILE (unable to autoload) No definition for sub Fcntl::F_SETLK64
No definition for sub Fcntl::F_SETLK64 (unable to autoload) No definition for sub Fcntl::F_SETOWN
No definition for sub Fcntl::F_SETOWN (unable to autoload) No definition for sub Fcntl::O_DSYNC No definition for sub Fcntl::O_DSYNC (unable to autoload)
Can't locate object method "IVX" via package "B::NV" at C:/Perl/lib/B/C.pm line
650.
CHECK failed--call queue aborted.
となり0行のCファイルができました。 どこに問題があるのでしょうか?何卒よろしくお願いします。
0895nobodyさん
2009/02/07(土) 16:26:29ID:???0896nobodyさん
2009/02/07(土) 18:52:05ID:???俺は「あたしんち」で初めて知ったから
バカチンって聞くと「あたしんち」のお母さんが
口から火を吐いてる絵が思い浮かぶ
0897nobodyさん
2009/02/07(土) 19:28:54ID:???0899nobodyさん
2009/02/07(土) 19:57:50ID:3N01Kgc2ググッて見つけた方法をいくつかテストしてみたのですが、全てダメでした。
例:「2ちゃんねる」を「2ちゃんねる」に変換したい。
・テストコードその1(正攻法)
my $txt = '2ちゃんねる';
$txt =~ tr/0−9/0-9/;
結果:文字化け 「0Q0ソ000ヒ0」
・テストコードその2(Jcodeを使うといいらしい?)
use Jcode;
my $txt = '2ちゃんねる';
my $txt2 = jcode($txt)->tr('0−9', '0-9');
結果:文字化け 「」イ、d网、ヘ、」
・テストコードその3(tr('[0-9]', '[0-9]')はEUCでないとだめ。スクリプトがSJISの場合は変換必要らしい?)
use Jcode;
my $txt = '2ちゃんねる';
my $from = jcode('0−9')->euc;
my $to = jcode('[0-9]-')->euc;
my $txt2 = jcode($txt)->tr($from, $to);
結果:文字化け 「」イ、d网、ヘ、」
・テストコードその4(スクリプトをEUCにしてjcode.pl使用)
require './jcode.pl';
my $txt = '2ちゃんねる';
jcode::tr(\$txt, '0-9', '0-9');
結果:「2」はOKだが、日本語が文字化け 「2、d网、ヘ、」
どのようにしたら、うまく変換できるでしょうか。
0900899
2009/02/07(土) 19:59:02ID:???「ム板の質問スレってなくなったんでしょうか?」と書くつもりでした。
0901nobodyさん
2009/02/07(土) 20:06:47ID:???0902nobodyさん
2009/02/07(土) 20:18:17ID:???http://www.namazu.org/~tsuchiya/perl/perl-5.8.html
0903nobodyさん
2009/02/07(土) 20:19:34ID:???@num{qw(0 1 2 3 4 5 6 7 8 9)}= (0 .. 9);
$s=~ s/(\x82[\x4f-\x58]|[\x81-\x9f\xe0-\xfc].|.)/$num{$1} ne '' ? $num{$1} : $1/ges;
でどうよ
0904899
2009/02/07(土) 20:44:36ID:???馬鹿馬鹿しい話ですが tr('0−9', '0-9'); の「0−9」の真ん中のハイフンまで大文字になっていました・・・。
ここを直してSjisで出力したら、テストコード3でOKでした。
use Jcode;
my $txt = '2ちゃんねる';
my $from = jcode('0-9−')->euc;
my $to = jcode('0-9-')->euc;
my $txt = jcode($txt)->tr($from, $to)->sjis;
Jcodeを使ったのは、ググッて見つけた解説がほとんどJcode使用ばっかりだったからです。
Encodeを使った場合、trするのはどうすればいいんでしょうか。
0905nobodyさん
2009/02/07(土) 20:47:14ID:???0907nobodyさん
2009/02/08(日) 01:46:54ID:???DateTime使ってるんなら簡単な関数作ればいいんじゃね?
#!/usr/bin/perl
use strict;
use warnings;
use DateTime;
my $tz = DateTime::TimeZone->new( name => 'local' );
sub s2dt {
my $duration = shift;
my $now = DateTime->now( time_zone => $tz )->epoch;
my $duration_dt = DateTime->from_epoch( epoch => $now + $duration - $now );
return $duration_dt->hms;
}
use Data::Dumper;
print Dumper s2dt(45); # $VAR1 = '00:00:45';
print Dumper s2dt(130); # $VAR1 = '00:02:10';
print Dumper s2dt(3601); # $VAR1 = '01:00:01';
0908nobodyさん
2009/02/08(日) 12:20:52ID:???ドキュメントの読みの浅さが露呈して申し訳ないです。
ありがとうございました。
が、>>891をやるには、単純に
DateTime->from_epoch(epoch => 3601)
でいけると思ったのですが、
> my $duration_dt = DateTime->from_epoch( epoch => $now + $duration - $now );
はどんな意味があるのですか?
0909nobodyさん
2009/02/08(日) 18:14:28ID:bk/uRgIM0910nobodyさん
2009/02/08(日) 18:30:44ID:???0911nobodyさん
2009/02/08(日) 18:38:25ID:???あれですあれ。perlはどうやってやるのですか?
0912nobodyさん
2009/02/08(日) 18:47:33ID:???0913nobodyさん
2009/02/08(日) 18:55:22ID:???0915nobodyさん
2009/02/08(日) 18:59:30ID:???0916nobodyさん
2009/02/08(日) 19:11:47ID:???http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq9.html#how_can_i_get_better_error_messages_from_a_cgi_program
とりあえず、こっちも。
http://perldoc.jp/docs/perl/5.10.0/perldebtut.pod
0917nobodyさん
2009/02/08(日) 22:13:41ID:???自分はこう書いてます。
if () {
} elsif () {
} else {
}
0919nobodyさん
2009/02/08(日) 23:40:09ID:???あ。ごめん$nowいらないな
最初違うやり方で作った後に「差を出せばいっか」ってことに気づいてやったんだけど、
epoch => $duration
だけあればいいね
0920nobodyさん
2009/02/09(月) 00:03:20ID:???If () {
}
elsif () {
}
else {
}
制御文の頭が常に一列目に来るようにこんな感じで。
()の両側には1スペースを入れる。
0921nobodyさん
2009/02/09(月) 00:46:19ID:???} elsif () {
} else {
}
おれはこんな感じ
スタートとエンドが同じタブ位置って考えると、これが自然かなと自分では思ってる。
0922nobodyさん
2009/02/09(月) 03:06:32ID:???if()
{
}
elsif()
{
}
else
{
}
0923nobodyさん
2009/02/09(月) 03:12:05ID:???俺はこう。
if () { }
elsif () { }
else { }
嫌なんだよ、改行が。cssとかもいつもこう書いてる。
0927nobodyさん
2009/02/09(月) 11:44:49ID:???0928nobodyさん
2009/02/09(月) 13:11:50ID:???0931nobodyさん
2009/02/10(火) 00:31:04ID:???0937nobodyさん
2009/02/10(火) 17:59:35ID:???0938nobodyさん
2009/02/11(水) 01:12:17ID:DSvC+HT2for (my $i=0;$i<$num;$i++) {}
for my $i (0..$num-1) {}
# 両方ともしっくりこないのですが、妙案ありませんか?
# ruby の (0...5) みたいなのが希望です
0939nobodyさん
2009/02/11(水) 01:26:15ID:???0940nobodyさん
2009/02/11(水) 01:35:21ID:DSvC+HT2レスありがとうございます。
今回は配列の添字で$iを使いたいのです。説明足らずですいません。
# かといって$[を書き換えるような事はしたくないのでw
0941nobodyさん
2009/02/11(水) 01:40:31ID:???0942nobodyさん
2009/02/11(水) 04:51:02ID:???0943nobodyさん
2009/02/11(水) 06:47:14ID:???0944nobodyさん
2009/02/11(水) 09:12:53ID:???0945nobodyさん
2009/02/11(水) 09:35:29ID:???for(0 .. 4){
my $i = $_;
・・・・
}
0946nobodyさん
2009/02/11(水) 10:55:50ID:???my $num = 5;
my $n = $num-1;
for my $i (0 .. $n) {}
0947nobodyさん
2009/02/11(水) 13:33:22ID:???0948nobodyさん
2009/02/11(水) 13:36:30ID:???それは違うと思うけど
0949nobodyさん
2009/02/11(水) 13:37:25ID:???my @foo;
foreach my $num (0 .. $#foo) { ... }
それか、grep、mapとか・・・
0950nobodyさん
2009/02/11(水) 13:39:43ID:???0951nobodyさん
2009/02/11(水) 19:17:33ID:???0952nobodyさん
2009/02/12(木) 01:21:39ID:elf1AFfGその際予期しないファイルを発見した時、外部サーバーのphpファイルへhttpアクセスするという
事を行いたいのですがどのようにすればよいのでしょうか?
流れは以下のようになります。
1.perlが予期しないファイルを発見する。
↓
2.perlからhttp://www.hoge.com/check.php?g=1へアクセスを行う。
↓
3.check.phpが引数を取得して処理をする。
上記処理を自動で行いたいのですが。
どなたかお解かりになる方、ご教示お願い致します。
0953nobodyさん
2009/02/12(木) 01:29:57ID:???http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq9.html#how_do_i_fetch_an_html_file
0954nobodyさん
2009/02/12(木) 08:59:48ID:???0956nobodyさん
2009/02/12(木) 09:26:47ID:???0957nobodyさん
2009/02/12(木) 12:30:22ID:???あぷうろだを運営しています
ファイルがアップされたときにファイルの中身をプログラムでチェックしており、
あやしいファイルがアップされたときに外部のURLへ通知を行いたいのですが
どのようにやればいいのか分かりません
なのかな?
だとすれば >>953 にある
use LWP::Simple;
$content = get($URL);
で解決します
0960nobodyさん
2009/02/12(木) 16:47:42ID:???$test = '文字列の中の複数の文字を入れ替える事を目的としています';
$test =~ s/文字列/Peal/g;
$test =~ s/目的/CGI/g;
としても駄目でした。
複数の文字列を入れ替える方法をご存知でしたらご教授願います。
0961nobodyさん
2009/02/12(木) 16:51:46ID:???0962nobodyさん
2009/02/12(木) 16:57:41ID:???作業していた文字の中に表現文字が入っていたみたいで正常に作動してなかったみたいです。
実際に使っているコードを見せないと駄目ですよね。以後気をつけます。
ご返答ありがとうございました。
0963nobodyさん
2009/02/12(木) 17:25:17ID:???0964nobodyさん
2009/02/12(木) 17:36:07ID:???0967nobodyさん
2009/02/13(金) 09:47:26ID:???0968nobodyさん
2009/02/14(土) 01:31:17ID:???0969nobodyさん
2009/02/14(土) 10:44:28ID:???これに含まれてないフォーマットは読めない。
use Imager;
my @types = Imager->read_types;
print "@types\n";
0970nobodyさん
2009/02/14(土) 11:43:20ID:???sgi
bmp
ico
pnm
tga
raw
ってなるんだよね。前はjpegも使えたと思うんだけど。アップデートしたときかな
0972nobodyさん
2009/02/14(土) 19:51:11ID:???0974nobodyさん
2009/02/14(土) 22:41:05ID:oywl4yOvそのスレッドの内容が書かれているファイルとディレクトリを削除するため
unlinkとrmdirを使う時、flockのようなことをしなくても問題ないのでしょうか。
一応、ファイルに関しては開いてflockでロックをかけた後、unlinkをしてみたのですが
Permission deniedと表示されてしまい削除されませんでした。
仮に必要な場合はflockではなく、ファイルやディレクトリを作成しその間は読み込めないように
するしかないのでしょうか。
0976nobodyさん
2009/02/15(日) 00:36:02ID:Bli/G9UXflockはファイルの読み書きに対応するのであってしかもflockは
仮にロックがかかっていてもflockを宣言したファイルでなければ
読み込めるみたいですしunlinkとrmdir意味がなさそうですね。
となると使わなくてもいいかファイルやディレクトリを利用してのロックですね。
調べてもそれらしき内容のものは出てきませんし大丈夫な気もしますがどうなんでしょうか。。
0977nobodyさん
2009/02/15(日) 00:50:45ID:???結論だけ言うと、何も考えずに削除してかまわないんじゃないかな。
噛み砕いて解説しようと思ったけど、予備知識が足りてない模様なので、更なる精進を期待する。
0978nobodyさん
2009/02/15(日) 02:46:56ID:Bli/G9UXそうですか。perl以外の他の知識が必要みたいですね。
システムコールあたり?ちなみに'perl unlink'ではなく
'unlink'で調べたらC言語のunlinkの解説が出てきて見てみたのですがopenされてると
削除されないように出来てるみたいですね。削除中にopenされたら?
とも思いましたがファイルの削除が開始された時点でアクセス不可になる。
というように今のところ解釈しています。
あくまで予想なのでこれからももっと励んでいつか理解できるように
なりたいと思います。ありがとうございました。
0979nobodyさん
2009/02/15(日) 03:13:07ID:???flockって同時にopenした時に
片方がもう片方に上書きされるのを防ぐためのもんでしょ
0980nobodyさん
2009/02/15(日) 04:03:44ID:???0981nobodyさん
2009/02/15(日) 09:20:41ID:???unlinkしとけばOSの側がいいように取り計らってくれるから、
こっちがどんな順番でどう処理するか考える必要ないと思うけど。
0982nobodyさん
2009/02/15(日) 09:22:25ID:???消した後に書き込み失敗しても関係ないじゃん。
0983nobodyさん
2009/02/15(日) 13:17:53ID:???0984nobodyさん
2009/02/15(日) 13:34:19ID:???close後にunlinkが実行される。
一方Windowsはunlinkに失敗した。
0985nobodyさん
2009/02/15(日) 18:24:40ID:???0986nobodyさん
2009/02/15(日) 19:10:45ID:???>>984は、一方ロシアは……のネタだから、あまり突っ込m
0987nobodyさん
2009/02/16(月) 10:10:47ID:???0988nobodyさん
2009/02/16(月) 10:27:36ID:???0989nobodyさん
2009/02/16(月) 11:46:19ID:???Perlコーディング初心者質問スレ Part 59
http://pc11.2ch.net/test/read.cgi/php/1234752149/
0990nobodyさん
2009/02/16(月) 12:31:40ID:???0991nobodyさん
2009/02/16(月) 13:06:22ID:???数万程度までだったら txt ベースの方が全然扱いやすい
0993nobodyさん
2009/02/16(月) 16:49:56ID:mVH+JlHn$title = "*********<title>ホームページ</title>*******";
という変数から「ホームページ」を抜き取るのになにか良い方法はないでしょうか?
現在<title>と</title>でsplitをして取得していますが、パターンマッチを用いて
上手く出来ないでしょうか?
どなたか宜しくお願い致します。
0996nobodyさん
2009/02/16(月) 18:45:42ID:???にした方がいいと思う
理由
(1) 必ずしも title となってない。 TITLE ってやってるところもある
(2) 変数に入ってるデータに改行が入ってれば s はあった方がいい
0997nobodyさん
2009/02/16(月) 19:41:13ID:mVH+JlHn>996
お二方有難う御座います。
パターンマッチ結果を変数に入れられるんですね。勉強になりました。
0998nobodyさん
2009/02/16(月) 20:08:20ID:???↑このカッコの意味が分からないorz
my $res = $title;
$res =~ m!<title>(.*?)</title>!is;
↑動作は同じはずだけど、こうやってました
0999nobodyさん
2009/02/16(月) 20:13:34ID:???後半は全然違うと思うが。
1000nobodyさん
2009/02/16(月) 20:18:15ID:???次スレで教えて欲しい
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。