Perlコーディング初心者質問スレ Part 63
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/09/09(金) 18:11:49.71ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2 以降
前スレ http://hibari.2ch.net/test/read.cgi/php/1295170172/
0184nobodyさん
2011/10/06(木) 12:31:19.56ID:???read(STDIN, $data, $ENV{'CONTENT_LENGTH'});
print $data;
だけのスクリプトを書いたんですが
Use of uninitialized value in read at 〜と出ます
これなんでですかね?
0185nobodyさん
2011/10/06(木) 12:50:34.41ID:???http://perldoc.jp/docs/perl/5.10.0/perldiag.pod
本当にその2行だけなのなら、
-w オプションが効いている下で $ENV{'CONTENT_LENGTH'} を未定義のまま実行したからだろう。
0186nobodyさん
2011/10/06(木) 13:13:47.41ID:???ありがとうございます。他のところがおかしいんじゃなくてよかったです。
これは入力がなければ出るものなんですね。
0187nobodyさん
2011/10/06(木) 14:16:31.01ID:???> これは入力がなければ出るものなんですね。
違う。$ENV{'CONTENT_LENGTH'} が未定義 (undef) だから出ている。
STDIN からの入力が無くとも $ENV{'CONTENT_LENGTH'} に 0 が入っていれば出ない。
> Use of uninitialized value%s
> (W uninitialized) 未定義値を、あたかも既に定義されているかのように使用しました。
> これは、"" か 0 と解釈されますが、間違いの可能性があります。
> この警告を止めるには、変数に定義された値を代入してください。
0189nobodyさん
2011/10/07(金) 00:00:35.18ID:???0190nobodyさん
2011/10/07(金) 01:23:00.44ID:???<script>タグ勘違いしてる。それはクライアント側での処理だから。
ttかHTML::Templateなどのテンプレートエンジンを考えてみたら。
0192nobodyさん
2011/10/08(土) 14:37:18.51ID:???の make test は Result: PASS になり、
SYNOPSIS にあるコードを動かしてみたところ、
Can't call method "add_handler" on an undefined value at /usr/lib/perl5/site_perl/5.10/WWW/BBS/2ch.pm line 39.
と出ました。なので 2ch.pm:39 を見ると、
https://github.com/motemen/WWW-BBS-2ch/blob/master/lib/WWW/BBS/2ch.pm
my $class = shift;
my $self = bless {
ua => LWP::UserAgent->new(agent => "Monazilla/1.00 WWW::BBS::2ch/$VERSION"),
encoding => 'shift_jis',
@_,
}, $class;
$self->ua->add_handler(
という感じです。
Dumper $self->ua; すると undef です。
エディタを開いて試しに自分で
$ua = LWP::UserAgent->new(agent => "Monazilla/1.00 WWW::BBS::2ch/$VERSION");
$ua->add_handler(
とか書くと $ua は取得できて add_handler も動くので CPAN モジュールは問題なく入っているようです。
my $self = bless {} が怪しいのですが、どうすれば WWW::BBS::2ch の SYNOPSIS を動かせるでしょうか。
0194nobodyさん
2011/10/08(土) 18:24:39.39ID:???sub ua{ }
は定義されてるの?
0195nobodyさん
2011/10/08(土) 23:56:07.90ID:???どうも https://github.com/motemen/WWW-BBS-2ch の例が間違っているみたい。
| my $bbs = WWW::BBS::2ch->new(cache => $cache, ua => $ua);
ここで $cache, $ua なんて存在しないから。
その通りに入力したら $self->ua は undef になるだろう。ためしに引数無しで
| my $bbs = WWW::BBS::2ch->new;
としたらどうだ。
0196nobodyさん
2011/10/09(日) 16:35:15.15ID:???わざわざフレームワーク通すまでもないときはどうするのがモダンなの?
0197nobodyさん
2011/10/09(日) 17:53:18.28ID:???0199nobodyさん
2011/10/11(火) 23:38:30.50ID:Xx0lESYm此方で改めて質問させて下さい。
その1------------
DBIからのSqlサーバへの接続方法をご教示下さい。
質問場所がここじゃなかったら誘導お願いします。
以下の環境を作成し、
コマンドプロンプトからtest.plをCALLしたのですが
SQLサーバがないとのエラーが表示され、接続出来ませんでした。
値を色々変えてみたりしたのですがどうやっても接続できず…
何が悪いのかお手上げ状態です。
接続文字列が悪いのでしょうか…?
ODBCでの接続は行えており、CSEからのDB参照や
コマンドプロンプトからのsqlcmdコマンドでなら正常にアクセスできます。
[sqlcmd /E /S PC-Name\SQLEXPRESS]
環境
・Windows7
・Microsoft SQL Server 2008
・Perl5.0
Server:PC-Name\SQLEXPRESS
DB:sampleDB
User:user
Password:pass
0200nobodyさん
2011/10/11(火) 23:39:50.63ID:Xx0lESYmtest.pl
-----------------------
$dataSource = "dbi:ODBC:".
"driver={SQL Server};".
"Server=(local);database=sampleDB;".
"Trusted_Connection=yes;".
"AutoTranslate=No;";
#データベースに接続
$user="user"; #ユーザ名
$pwd="pass"; #パスワード
$dbh = DBI->connect($dataSource,$user,$pwd)
or die $DBI::errstr;
# データアクセス(今は処理無し)
$dbh->disconnect;
-----------------------
エラー内容
-----------------------
DBI connect('driver={SQL Server};Server=(local);database=sampleDB;Trusted_Connec
tion=yes;AutoTranslate=No;','user',...) failed: [Microsoft][ODBC SQL Server Driver
][Shared Memory]SQL Server が存在しないか、アクセスが拒否されました。 (SQL-08001
) [state was 08001 now 01000]
[Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionOpen (Connect()). (S
QL-01000) at dbtst.pl line 28
[Microsoft][ODBC SQL Server Driver][Shared Memory]SQL Server が存在しないか、ア
クセスが拒否されました。 (SQL-08001) [state was 08001 now 01000]
[Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionOpen (Connect()). (S
QL-01000) at dbtst.pl line 28.
-----------------------
0201nobodyさん
2011/10/11(火) 23:40:28.76ID:???0202nobodyさん
2011/10/11(火) 23:48:58.55ID:Xx0lESYm「その2」を付け忘れてしまいましたが
199-200でワンセットです。
Linux + MySql5.0 + DBIで動作しているシステムを
改造する為のローカルサーバを作成したいので、
どうしてもDBIを使用したいと考えています。
よろしくお願いいたします。
0203nobodyさん
2011/10/12(水) 01:55:18.70ID:???この表記はアリなのか?
0205nobodyさん
2011/10/12(水) 08:22:59.76ID:???sampleDBが文字列じゃなくて変数になってないか?
0206nobodyさん
2011/10/12(水) 12:30:39.86ID:???0207199
2011/10/12(水) 18:44:51.34ID:QKPkC9MD>>203
Server=(local);
の表記は、ネット上で拾ったやり方をそのまま使っているので
使える…とは思うのですが…。ちなみに、
Server='PC-Name\SQLEXPRESS';
にしても状況変化なしです。
205 206>>
"database='sampleDB';"
に変更してみましたが、変化なしです。
エラーメッセージで
「SQL Server が存在しないか、アクセスが拒否されました」
とあるので、DBではなくServerへの接続が
失敗しているのではないかと思うのですが
Windows7の場合カーネルの違いから挙動が異なる
といった事はありませんでしょうか?
0209199
2011/10/12(水) 20:45:40.79ID:QKPkC9MD有難うございます!
ODBC経由でDBに接続する事でアクセする事が出来ました(>_<。
ユーザDSNに「dbgSQLServer」の名前でDBを登録し、
$dataSource= "dbi:ODBC:dbgSQLServer";
としたら無事SQLの実行まで確認できました。
直接接続する事にこだわる必要は無かったんですね。
何日も悩んでいた事だったので本当に助かりました。
有難うございました。
0210nobodyさん
2011/10/12(水) 22:01:53.09ID:???よかったよかった!
Windows+PostgreSQLでDBD::Pgが使えなくて困ったときにそうしたんだ。
その時PgPPどころかCPANもわからなかったあのころ。
車輪何個も作っちゃったけど、キニシナイ
0211199
2011/10/13(木) 18:35:59.97ID:???本当有難うございました。
PostgreSQLは使ってみようとインストールする時点で
挫折した記憶が…(^^;
プログラムををゴリゴリ書くのは楽しいんですが
何時も環境構築が一番のネックになります。
これでやっとコーディングに入れます♪
0212nobodyさん
2011/10/17(月) 23:46:25.75ID:???自分は今は rename とか mkdir とか使ってロック機構を実装してますが、
お仕事とかで perl を使ってる人はファイルロックする際には rename とか
mkdir とかでロックかけてるのでしょうか?
それとも flock を使用しているねでしょうか?
「DB 使えや」 ってゆう回答は求めておらず、ファイル読み書き時に於けるロックは、
仕事などではどう対応されているのか気になったもので、質問させていただきました。
0213nobodyさん
2011/10/18(火) 01:32:44.53ID:???以前、自分が入社する前に書かれたソースを見たことがあるんだけど、その時はflockを使ってたっぽい。
ただflockすれば良いというものでもなく、きちんとした方法で使わないと全くの無意味だけど。
あと、今ならその辺を上手くやってくれるモジュールがるような気がする。
0214nobodyさん
2011/10/18(火) 06:58:20.05ID:???その場合はmkdirなり使うとかの、別の方法で対処すると思う。
プロとかアマとかはあんまし関係ないんじゃないだろうか。
0215nobodyさん
2011/10/18(火) 12:47:22.63ID:???0216nobodyさん
2011/10/18(火) 16:58:19.77ID:???イントラでperl使ってるけど…
ごめん、DB(PostgreSQL)つかってる。
月並みだけど、
DB>flock>その他の手段
だよね。
0218nobodyさん
2011/10/18(火) 17:48:49.73ID:???デッドロックに対する対応だけど、
プロセスがkillされるような事態に備えて $SIG でトラップすべきか、
次実行されたときにデッドロックされたファイル情報から指定時間経過してればデッドロックと判断。
どっちがいいんでしょうね。
トラップした方がスムーズにいけるっぽいけど、他の部分で別のトラップがされると実行されない可能性もあったりするんだよね。
迷うわぁ・・・
0219nobodyさん
2011/10/18(火) 22:08:36.70ID:???デッドロックしないようにつくれや
0220nobodyさん
2011/10/18(火) 22:33:11.15ID:???0222nobodyさん
2011/10/18(火) 23:25:30.92ID:???0223nobodyさん
2011/10/19(水) 00:20:24.38ID:???0224nobodyさん
2011/10/19(水) 00:46:29.74ID:LOxxA4S5widthを入力しないといけませんよね
全角文字だけなら計算できるのですが、半角英数カナなどが含まれるので余白が発生してしまいます。
あらかじめ文字列の長さをpixelで計算する方法はありませんか?
0225nobodyさん
2011/10/19(水) 09:54:29.71ID:???cp932に変換してバイト数を調べるのはどうか
0226nobodyさん
2011/10/19(水) 10:42:15.21ID:???@bounds = GD::Image->stringFT($fgcolor,$fontname,$ptsize,$angle,$x,$y,$string)
0228nobodyさん
2011/10/21(金) 17:01:48.08ID:???0229nobodyさん
2011/10/22(土) 05:11:26.88ID:???現在ファイルがopenできなくなると言う罠に陥りました。
windows7でこうゆうファイル名なんですが、コレ問題ありますか?
運用はunix系で考えているんでそっちでも問題あれば教えてください。
0230nobodyさん
2011/10/22(土) 05:13:47.30ID:???0233nobodyさん
2011/10/22(土) 21:14:46.30ID:???0234nobodyさん
2011/10/22(土) 21:57:21.39ID:???0235nobodyさん
2011/10/22(土) 22:19:39.38ID:???0236nobodyさん
2011/10/24(月) 13:03:32.39ID:???こうすると
push($h{$i}->[0], "aaa"));
このようなエラーになります。
Type of arg 1 to push must be array (not array element)
0237nobodyさん
2011/10/24(月) 13:36:02.75ID:???0239nobodyさん
2011/10/24(月) 13:58:00.35ID:???Perlだけ作法が全然違うからわかわからないんですけど、どうすればいいですか?????????
0240nobodyさん
2011/10/24(月) 15:33:37.66ID:???use v5.14;
push $h{$i}, "aaa";
でいけるかな?
0242nobodyさん
2011/10/24(月) 19:39:40.90ID:???0243nobodyさん
2011/10/24(月) 23:41:27.27ID:???ハッシュとか配列とかの操作でカッコとか記号とかが覚えられない。
代入するときも表示するときもアクセスの仕方が違ったりして覚えられない。ダンプするのも一苦労。
クラスのnewのblessとか未だに何なのかわからない。祝福とは???
リファレンスとかスカラーとかレキシカルとか聞き慣れない用語ばかり出てくる。
スコープとかクロージャとかJavaScriptの悪夢がよみがえる。
とにかく記号ばっかりで暗号いじってるみたいな意味不明さが怖い。
$hoge; $hoge{0}; $hoge->{0}; @hoge; @hoge{0}; @hoge->{0}; %hoge; %hoge{0}; %hoge->{0};
${$hoge}; @{hoge}; @{$hoge}; {@{$hoge{0}}} @{$hoge->[0]}; %{$hoge->[0]}; %{$hoge->{0}}
どれだよ!!!!!!!!111111111
0244nobodyさん
2011/10/24(月) 23:51:16.92ID:???スコープとかクロージャ駄目ってんじゃ他の言語もまともに使えてないだろ……
0246nobodyさん
2011/10/25(火) 00:14:38.50ID:???$hoge{0}; ハッシュ
$hoge->{0}; ハッシュへのリファレンス
@hoge; 配列
@hoge{0}; エラー 配列へのアクセスは $hoge[0] でアクセス
@hoge->{0}; エラー 配列へのリファレンスは $hoge->[0] でアクセス
%hoge; 連想配列
%hoge{0}; 記述エラー 連想配列内の要素は $hoge{0} でアクセス
%hoge->{0}; 記述エラ 連想配列へのリファレンスは $hoge->{0} でアクセス
${$hoge}; スカラのデリファレンス
@{hoge}; エラー
@{$hoge}; 配列のデリファレンス
{@{$hoge{0}}} 連想配列内の配列をデリファレンス ($hoge{0} の中に配列が入っている) ただし外の {} は括る必要なし。 この場合 {} はブロックになる。
@{$hoge->[0]}; 配列へのリファレンスの中の配列
%{$hoge->[0]}; 配列へのリファレンスの中の連想配列
%{$hoge->{0}} 連想配列へのリファレンスの中の連想配列
こんな感じのも良く使うので覚えた方がいいかも。
$hoge = {
'array' => [], 連想配列へのリファレンスの中に配列を作る
'hash' => { 連想配列へのリファレンスの中に連想配列へのリファレンスを作る
'key1' => 'val',
'key2' => 'val',
}
};
それぞれへのアクセスは
$hoge->{'array'}->[1];
$hoge->{'hash'}->{'key1'};
となる。
0247nobodyさん
2011/10/25(火) 00:41:32.32ID:???エラーではない
が、スライスを理解して使っているわけではなく、たまたま動いているだけ、の初心者が多いと思う
0248247
2011/10/25(火) 00:42:17.13ID:???0249nobodyさん
2011/10/25(火) 01:04:32.90ID:???warnings 有効なら @hoge{0} は警告出るだろうが、
@hoge{0..2} とか、 my @keys = (0); @hoge{@keys} なら問題ないはず
0250nobodyさん
2011/10/25(火) 01:31:51.65ID:???けどね。
質問者がくじけてる部分を考えたらスライスは考えないほうがいいのでは?
という意味からエラーっていうことにした。
まぁ、言葉が足りなかったってのもあるけど ^-^;
0251nobodyさん
2011/10/25(火) 01:51:36.00ID:???> @{hoge}; エラー
エラーではない。
全ての変数や関数へのアクセス方法で一番冗長な書き方は sigil { (何か) } ([添え字]|{キー})
の形で、何かが裸の語なら変数名、リファレンスならデリファレンス、
それ以外なら何かの値を名前としたシンボリックリファレンスと解釈される。
通常の変数へのアクセスは、裸の語をデリファレンスすると捉えてもいい。
${ foo } … 通常の変数。{} は*省略可能*。 ${foo} = "foo${foo}foo$foo"; # ok
${ "foo" } … シンボリックリファレンス
${ $foo } … スカラーリファレンス $foo をデリファレンス
${ 'f' . 'oo' } … 式の値を名前としたシンボリックリファレンス
${ \ foo('bar') } … foo('bar') の戻り値のリファレンスのデリファレンス
http://perldoc.jp/docs/perl/5.10.0/perldata.pod#Slices
> (引用注: 添え字/キーの) かっこの種類(大かっこか中かっこか)は、見ているものが配列か
> ハッシュかをつかさどっています。一方、配列やハッシュの先頭の記号 ('$' か '@') は、
> 返ってくるものが単一の値(スカラ)か、複数の値(リスト)かを示しています。
use warnings; my @{foo} = ('a'..'f'); my %{bar} = ('g'..'j');
print ${foo}[3]; # 'd' へのアクセスで "d" を表示
print @{foo}[3]; # 警告有り。('d') へのアクセスで "d" を表示
print @{foo}[3,4]; # ('d','e') へのアクセスで "de" を表示
print ${foo}[3,4]; # 警告有り。リストをスカラーとして評価すると最後の値が返されるので "e" を表示
print ${bar}{'g'}; # 'h' へのアクセスで "h" を表示
print @{bar}{'g'}; # 警告有り。('h') へのアクセスで "h" を表示
print @{bar}{'g','i'}; # ('h','j') へのアクセスで "hj" を表示
print ${bar}{'g','i'}; # キー "g$;i" へのアクセスになるので undef
0252nobodyさん
2011/10/25(火) 03:20:14.95ID:???これだけ知らなかったわ。awk 由来なのかな。
まあ積極的に使う意義は無さそうだし、
人のコードで見かけることもないから覚えなくてもいいよね。
0253nobodyさん
2011/10/25(火) 22:21:51.58ID:???> クラスのnewのblessとか未だに何なのかわからない。祝福とは???
blessは意味わからないよね。
あれ、祝福とか変な言葉で説明するからわからんのさw
オレ流に説明してあげよう。
まず、これを実行してみよう。Dumperは変数の中身を表示する関数だ。use Data::Dumperが必要。
my $a = {key=>1};
print Dumper($a)
以下のように表示される。(改行インデントは折りたたむ)
そう、ようするにただのハッシュだ。
$VAR1 = {'key' => 1};
次に次の命令を実行してみよう。
my $a = {key=>1};
bless($a, "CLASS");
print Dumper($a)
以下のように表示される。さっきのハッシュの周りにCLASSが追加されている。
VAR1 = bless( {'key' => 1}, 'CLASS' );
つまりだ、これはCLASSという名前のクラス名(モジュール名)付きのハッシュということだ。
このモジュール名付きのハッシュにたいして、以下のように->を使って呼び出しをすると、
$a->foo()
$aにはCLASSというモジュール名が結びついているため、CLASS::foo()を呼び出すんだなとPerl実行環境は理解できる。
その時CLASS::foo()の第一引数に$aを渡すことで、foo()の中で$aの値の操作することが可能にある。
これでCLASSクラスのfoo()メソッド呼び出しの仕組みと、$aをCLASSクラスのインスタンスに変換することができた。
0254nobodyさん
2011/10/25(火) 22:33:18.24ID:???$a に bless使ってCLASSと結びつけたハッシュが入っていれば、
CLASS::foo()が呼び出されるわけだが、
$aは文字列でもよい。つまり、
$a = 'CLASS';
$a->foo();
この方式でもCLASS::foo()が呼び出せる。
通常は、CLASSを$aに入れずにそのまま書いて、CLASS->foo() となる。
でこれが foo()じゃなくて new() だと、CLASS->new() となる。
呼び出されるのは、当然CLASS::foo(); そして foo() の第一引数にはCLASSという文字列が入っている。
これを利用してCLASS::newされた時に、CLASSに結びつけたハッシュ、
つまりCLASSのインスタンスを返すことで、Perlにおけるnewの仕組みとなる。
あと余談。殆どの場合ハッシュにCLASSを結びつけるのだが、
別にただの値にCLASSを結びつけるのも一応可能。
0255nobodyさん
2011/10/25(火) 22:34:03.01ID:???×呼び出されるのは、当然CLASS::foo(); そして foo() の第一引数にはCLASSという文字列が入っている。
○呼び出されるのは、当然CLASS::new(); そして new() の第一引数にはCLASSという文字列が入っている。
0256nobodyさん
2011/10/25(火) 22:36:14.83ID:???> 別にただの値にCLASSを結びつけるのも一応可能。
ただの値にblessはできんか。
何かしらの値のリファレンスにblessできる。
0257nobodyさん
2011/10/25(火) 23:11:45.61ID:???を使ってファイルをダウンロードしたいのですがうまくいきません。
perl というかwget の使い方の問題なのかもしれませんが、
適切な書き方をご存知のかたがいらっしゃったらおしえていただけませんか?
ダウンロードしたいファイルは以下のURLです。
ttp://ncode.syosetu.com/txtdownload/dlstart/ncode/108715/?no=1&hankaku=0&code=utf-8&kaigyo=CRLF
エラーとしては、こう言われます。
index.html?no=2&hankaku=0&code=utf-8&kaigyo=CRLF: Invalid argument
Cannot write to `index.html?no=2&hankaku=0&code=utf-8&kaigyo=CRLF' (Invalid argument).
0258nobodyさん
2011/10/25(火) 23:53:11.13ID:???use LWP::Simple;
my $data = get('URL');
特に認証がなければ、これで取得できるかと。
自分は
use LWP::UserAgent;
use HTTP::Request::Common;
use utf8;
my $ua = LWP::UserAgent->new;
〜agent とか timeout とか max_redirect とか cookie の設定〜
my $req = GET('URL');
my $res = $ua->request($req);
my $content = $res->code() eq '200' ? decode('utf-8', $res->content()) : '';
ってやってる。
手順が多いけど、自分の頭ではこの方が使いやすい。
$res->code() eq '200' の部分は $res->is_success とかで置き換えられるけど、回線がパンパンのときに失敗すると
is_success は 1 を返すので信用出来ない。
HTML の取得なら、$res->content() に </html> が含まれるかどうかで判断した方が良い。
つっても、殆どの場合は is_success や is_error は正しく動作する。
0259nobodyさん
2011/10/26(水) 01:13:19.12ID:???wget は特に指定がなければサーバのパスに対応するファイル名でローカルに保存しようとするから、
? はファイル名に使えねえよと言われてるのでは。Windows ないから試せないけど。
>>258
sub is_info ($) { $_[0] >= 100 && $_[0] < 200; }
sub is_success ($) { $_[0] >= 200 && $_[0] < 300; }
sub is_redirect ($) { $_[0] >= 300 && $_[0] < 400; }
sub is_error ($) { $_[0] >= 400 && $_[0] < 600; }
sub is_client_error ($) { $_[0] >= 400 && $_[0] < 500; }
sub is_server_error ($) { $_[0] >= 500 && $_[0] < 600; }
# HTTP::Status より。
失敗したにもかかわらず is_success が真を返すというなら、
まず疑うべきは LWP でなくサーバ側のレスポンスでは?
原因がクライアント/サーバ/回線/他のいずれにせよ、
負荷等が原因で200以外の2xxが返ってくる状況なんてちょっと想像つかんが。
decode('utf-8', $res->content()) はよっっっぽど古いバージョンの LWP じゃない限り
$res->decoded_content(charset => 'utf-8') のほうがよかろ。
0260nobodyさん
2011/10/26(水) 01:38:17.35ID:???失敗なのに is_success が成功を返すのは少々特殊な状況なのは分かってる。
自宅でサーバー動かしてて家のルータは BA8000Pro なんだけど、BitTorrent で Linux ISO を放流してる。
バージョンアップがくるとコネクションがすごい数やって来て、NAT のテーブルが溢れて (上限は 2600)
名前解決すら頻繁に失敗するほど不安定になる。
この状況下で LWP で GET とかすると is_success が成功を返しても、->content() が全てを受け取ってないという事が起こる。
そのほかの環境は弄らずに BitTorrent だけ止めると LWP は正常に送受信できる。
これは何度も再現するのはテスト済。
ちなみに BitTorrent を動かしてるのは WEB サーバーとは別の PC です。
最近は BitTorrent 動かしてないからこういった症状ともおさらばで快適人生♪
>> decoded_content
おぉ〜、こんなメソッドあったんですね。ありがとう!
常々 Encode 呼び出すのめんどくせーって思ってたんで助かる。
0261nobodyさん
2011/10/26(水) 02:43:24.74ID:???>>257です。
アクセスが出来ないじゃなくて、書き込みができないっていう意味だったんですね。
もっと自分でよく考えてみるべきでした。
-Oオプションを付けて書き込むファイル名を指定したところ上手くいきました。
知恵を貸していただきありがとうございます。
0262nobodyさん
2011/10/27(木) 00:59:33.75ID:???あんなふざけたレスにマジレス返してくれてどうもありがとうございます。
まだ全部は試せてないですが、>>246とか物凄く参考になっています。
perldoc.jpなども読んで、もう少し勉強してみますね。
0263nobodyさん
2011/10/27(木) 01:39:37.97ID:???変数名の前の @、$、% の意味 (* ってのもあるけど、難しいので放置で OK)
変数に代入するときの { }、[ ]、( ) の意味を覚えるだけで、理解度はかなり違うと思います。
あとは perl の自由な書き方に慣れていただくしかw
0264nobodyさん
2011/10/27(木) 16:41:18.27ID:???使ったことがないわけじゃないんだけど。
0265nobodyさん
2011/10/27(木) 18:34:30.14ID:???0266nobodyさん
2011/10/28(金) 20:00:02.80ID:???環境はLinuxです。
よろしくお願いいたします。
0267nobodyさん
2011/10/28(金) 20:16:08.47ID:???Python とかのほうが向いてる気はするけど
0268nobodyさん
2011/10/30(日) 22:07:34.60ID:???もし使ってる方はどのソフト使ってますか?
ttp://hibari.2ch.net/test/read.cgi/tech/1147499933/
↑ここでperlの話題がなく、「perl uml」で検索してもそれらしいものが見つからなかったので質問しました。
UMLを勉強しようと思うのですがどのツールがいいのかもわかりません。。
0269268
2011/10/31(月) 00:15:05.76ID:???これはココだとスレ違いですね。
この一文は無視して下さい。
0270nobodyさん
2011/11/01(火) 11:30:50.31ID:???docomo携帯の太陽のSJIS絵文字コード(F89F)を表示しようとしたのですが、
(1)は表示されて、(2)は単なる文字列になっているようでした。
\x{}といった表記ではバイナリにならないのでしょうか?
また、バイナリにする場合、""での設定やpack()など色々あると思うのですが、
処理が速いのはどの方法になるのでしょうか?
(1)my $sun = "\xF8\x9F"
(2)my $sun = "\x{F89F}"
0271nobodyさん
2011/11/01(火) 13:02:20.96ID:???http://perldoc.perl.org/perlop.html#Quote-and-Quote-like-Operators
> If the number is 256 (0x100, 0400) or above, Perl interprets it as a Unicode code point
> and the result is the corresponding Unicode character.
http://www.nttdocomo.co.jp/service/developer/make/content/pictograph/basic/
よって iモードの Shift_JIS で "\xF8\x9F" に割り当てられている絵文字を
iモードの UTF-8 のページで出したければ "\xEE\x98\xBE" 。
(Perl用語で言うところの) Unicode 文字列なら "\x{E63E}" 。
参考ページ:
>>2
http://perldoc.jp/docs/perl/5.10.0/perluniintro.pod
http://search.cpan.org/dist/Encode-JP-Mobile/lib/Encode/JP/Mobile.pm
http://search.cpan.org/dist/Unicode-Japanese/lib/Unicode/Japanese/JA.pod
0273nobodyさん
2011/11/01(火) 15:20:02.29ID:???x => [ 'a', '1' ],
y => [ 'b', '2' ],
z => [ 'c', '3' ],
};
my $b = map{}???
上記で$bに下記のようにセットするにはmapのところをどのように書けばよいでしょうか。
$b = {
x => 'a-1',
y => 'b-2',
z => 'c-3',
};
0274nobodyさん
2011/11/01(火) 15:36:36.16ID:???$b = { map { $_ => "$a->{$_}[0]-$a->{$_}[1]" } keys %$a };
# or
$b = { map { $_ => join '-', @{ $a->{$_} }[0,1] } keys %$a };
0275nobodyさん
2011/11/01(火) 15:59:53.49ID:???my $b = { map ref $_ ? join('-', @$_) : $_, %$a };
my $b; %$b = map ref $_ ? "$_->[0]-$_->[1]" : $_, %$a;
0277nobodyさん
2011/11/01(火) 17:31:41.93ID:???0278273
2011/11/01(火) 17:56:13.77ID:???テンプレートファイル内で、「html出力させないコメント」というのは書けないのでしょうか?
例えば下記の#の行はoutputで出力させないといった動作をさせたいです。
もしできないのであれば、使用されている皆さんはコメントを書きたい時、<!-- -->で対応しているのでしょうか?
<html>
<head>
<title>hoge</title>
</head>
<body>
fuga<br>
#コメントを書きたい
</body>
</html>
0279nobodyさん
2011/11/02(水) 04:52:21.99ID:???無かったはず。
ただし、new()の際にfilterを設定することで、前処理を行うことが出来る。
これを利用して、特定の文字列を置き換える(削除する)ことは可能。
詳細はドキュメントを参照されたい。
HTML::Templateは痒いところに届かないというか、痒み?何それ? って作り方だからなあ。
非PGのデザイナーにテンプレートファイル作りを任せるなら、これくらいじゃないと使ってくれなかったりするがw
0282デフォルトの名無しさん
2011/11/03(木) 03:59:56.91ID:???おみそれいたしました。
丸暗記だと応用が効かなくて行き詰ってしまうことが多いです。
0283nobodyさん
2011/11/03(木) 20:45:59.15ID:???Perlについての質問箱 49箱目
http://hibari.2ch.net/test/read.cgi/tech/1319953460/100-102n
Windows 2000、Activeperl 5.8 の環境で、
use Socket;
socket(・・・);
connect(・・・);
な感じでインターネット上のwebサイトからページを取得してるんだけど、
サイトの応答が遅いとき、応答が帰ってくるまでCPU負荷が100%近くになる。
これってどういった原因が考えられますか?
あるいは仕様でしょうか。
PCのスペックはWin2000を使っているというあたりで想像いただける通りかなりしょぼいですが、それにしても負荷高すぎかな、と。
Activeperlのバージョン上げれば直るのかな…
0284nobodyさん
2011/11/03(木) 22:20:35.11ID:???あるいは追加して、それを使うようにして対処。
今使っているLANカード+ドライバが割込みに対応した作りではない
のでCPU負荷が100%近くになっている。
■ このスレッドは過去ログ倉庫に格納されています