でもお前ら、偉そうなこと言ってfeatureで一番心待ちにしてるのはsayだろ?な?
すでにuse feature qw/say/;とかsub say {print shift . "\n"} とかしてるやつ手を挙げろ。
use 5.010; 派
export PERL5OPT=-M5.010
派
exe 'inoreabbrev <buffer> say '. 'print, "\n";'. "<C-O>F,"
派
935 :
デフォルトの名無しさん:2010/03/07(日) 23:52:03
( ´・ω・`)
936 :
デフォルトの名無しさん:2010/03/08(月) 00:18:35
(´・ω・`)
937 :
デフォルトの名無しさん:2010/03/08(月) 23:59:23
アクセスした人のポート番号80が空いてるかどうかを調べるにはどうすればいいでしょうか?
REMOTE_PORT関数で調べれると思ったのですがうまくいかなくて・・・
>>937 telnetででも80番叩いてみればいいじゃん。
(´・ω・`)
>>937 最近、phpしか触ってないのでperlの方を忘れたけど、phpならこんな感じ。
function is_online($server_ip)
{
$ip = gethostbyname("{$server_ip}");
if ($fp = @fsockopen($ip, 80,$un,$sinn,2)) {
fclose($fp);
return true;
} else {
return false;
}
}
要するに、ソケットをオープンして成功すれば、そのポートが開いてるってこと。
「perl ソケットオープン」
で検索汁
アクセスした人のIPアドレスが12.34.56.78 だった場合
お手元のブラウザで
ttp://12.34.56.78/ (頭にtをつけてね)
ってやってサーバーが見つかりませんってエラーがでたら80番空いてない。
何かしら出てきたら空いてる。
これでどうよ。
>>940 あぁ、ごめん、perlスレだったw
use LWP::Socket;
my($server, $port) = ('localhost', '80');
my $socket = LWP::Socket->new;
$socket->connect($server, $port);
ただ確かめるだけならこんなんでいいんじゃない?
一週間もまえの書き込みに今更・・・
open FILE, "<:encoding(cp932)", $hage;
read FILE, my $text, -s FILE;
close FILE;
みたいなスクリプトで cp932 *以外*のファイルを読んでしまうと
cp932 "\xEF" does not map to Unicode at C:\workspace\hoge\fuga.pl line **.
ってワーニングが出ますが、perlスクリプトはそのまま続行してしまいます。
ほんとうは停止してほしいんですけど、
read FILE, my $text, -s FILE or die; としても止まってくれません。
eval { ..... } die if $@; でも止まってくれません。
何か方法があれば教えてください。
>>945 local $SIG{__WARN__} = sub{ die @_ } ;
スクリプトの最初の方にでも突っ込んどけば?
use PerlIO::encoding;
use Encode qw[ :fallbacks ]; # 定数の import
$PerlIO::encoding::fallback = Encode::DIE_ON_ERR;
open ...
という風に $PerlIO::encoding::fallback に定数を入れてやると
PerlIO で Encode がまずったときの動作を指定することが出来たはず.
定数については Encode の check に書いてあったと思う.
>>946 encoding使わないでdecode_utf8すれば良いんじゃない?
出力でencodeし直せばおけー
perlccがうまく動きません><
だれかこの部分だけでいいから、Cにしてくれ〜。
/^(.*) (.*) (.*) \[(.*)\] "(.*)" (.*) (.*) "(.*)" "(.*)"/;
951 :
950:2010/04/15(木) 11:15:49
すまん、やっぱいい
952 :
デフォルトの名無しさん:2010/05/24(月) 01:43:38
953 :
デフォルトの名無しさん:2010/05/24(月) 02:30:38
955 :
デフォルトの名無しさん:2010/06/11(金) 13:46:42
/ ̄ ̄\
/ ヽ、. _ノ \
| (●)(●) |
| (__人__) | ヨナも そうおもう
| ` ⌒´ |
| }
ヽ }
人_____ノ"⌒ヽ
/ \
/ へ \
( ヽγ⌒) | \ \
 ̄ ̄ ̄\__/
956 :
デフォルトの名無しさん:2010/07/21(水) 22:32:12
クライアントがサーバへファイル名を送り、サーバがそれを検索しそのファイルを送るサーバプログラムはどうかけばいいですか?
初歩的な質問で申し訳ないですが、よろしければご教授ください。
宿題は自分でやれ
>>956 > クライアントがサーバへファイル名を送り、
ieとかでwww.yahoo.co.jp/index.htmlと入れる。
> サーバがそれを検索しそのファイルを送る
apacheがindex.htmlの内容を返す。
つまり、apache のソースを提出すればよろし
959 :
デフォルトの名無しさん:2010/08/05(木) 06:17:40
hosyu age
960 :
デフォルトの名無しさん:2010/08/07(土) 12:37:44
use strict; をすり抜けて、use warnings; で引っかかる
事例って、どんなのがあるの?
あんいにしゃらいずどばりゅうとか?
>>960 暗黙の文字列→数値変換で、文字列が数値以外の文字が含まれてるとき。
> perl -Mstrict -Mwarnings -e 'print int("1a")'
Argument "1a" isn't numeric in int at -e line 1.
1
> perl -Mstrict -e 'print int("1a")'
1
>>962 なるほど・・・
じゃああえてそういう文字列食わせたいときとかは
一時無効にする必要があるわけか
初歩的な質問ですが…
use libでパスを複数指定するとエラーになったりしますか?
例えば、
hoge.pmが/home/***/perl5とかに入ってて
fuga.pmが/home/***/perl5/i386-freebsdに入ってる時
二つのパスをuse libすると500になります。
かといって片方しかパスを指定しない場合はCan't locateのエラーが出ます。
どうすれば両方のモジュールを使用することが出来るのでしょうか?宜しくお願いします。
>>964 それ多分違うところでエラーでてるかContent-Type吐いてないかパーミッションがおかしいかそんなとこだろ
どうにかしてエラー内容特定汁
#!/usr/bin/perl
use lib qw(/home/***/extlib/lib/perl5 /home/***/extlib/lib/perl5/i386-freebsd);
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use AnyEvent::HTTP;
use Coro;
print "Content-type: text/html\n\n";
print "hoge";
↑500が出る
/home/***/extlib/lib/perl5/i386-freebsdを残して
/home/***/extlib/lib/perl5の部分だけ切り取り
↑Can't locate AnyEvent/HTTP.pm in @INC (...
/home/***/extlib/lib/perl5を残して
/home/***/extlib/lib/perl5/i386-freebsdの部分だけ切り取り
↑Can't locate loadable object for module Coro::State in @INC (...
/home/***/extlib/lib/perl5/i386-freebsd/auto/Coro/Stateを追加
use AnyEvent::HTTP;があると500になるので削除
/home/***/extlib/lib/perl5だとCoroで500が返るので /home/***/extlib/lib/perl5/i386-freebsdに
↑Can't locate loadable object for module Guard in @INC (...
/home/***/extlib/lib/perl5/i386-freebsd/auto/Guardを追加
↑Can't locate common/sense.pm in @INC (...
/home/***/extlib/lib/perl5/commonを追加
↑変わらずCan't locate common/sense.pm in @INC (...が出る
今この状態です。
もちろん
#!/usr/bin/perl
use strict;
use warnings;
print "Content-type: text/html\n\n";
print "hoge";
これはちゃんとhogeが出力されます。
どういった原因が考えられますでしょうか?
2レスに渡り長々とすみません。どうかよろしくお願いします。
968 :
デフォルトの名無しさん:2010/09/16(木) 01:31:37
969 :
デフォルトの名無しさん:2010/09/16(木) 02:31:40
>>966 extlib/ をつくった環境とちがう環境でうごかそうとしたりしてませんか?
/home/***/extlib/lib/perl5/i386-freebsd 以下のディレクトリは環境依存のものがはいっているので、環境がちがうところにコピーしてつかったりはできませんけども。
(ここでいう環境とは OS, アーキテクチャ, -Dusethreads の有無, perl5 のバージョンのことです)
970 :
デフォルトの名無しさん:2010/09/16(木) 02:41:08
>>969 レスありがとうございます!!!
でも俺のレベルだとちょっと理解しきれ無いので、教えてもらった内容に含まれてるキーワードで早速ググッてきます!
>>969 解決しました!
環境が違うってのがどういうことかわかりました!#!/usr/bin/perl環境じゃなくてモジュールをインストールしたperl環境じゃないとダメ…みたいなことですよね?
どうもありがとうございました!
PerlというかDBIで、fetchが最後まで行って終了した時に、
もう一度先頭行からループし直す時どうすればいいのでしょうか?
カーソルを先頭行に戻すやり方を教えて下さい。
973 :
perl入門者:2010/09/26(日) 10:59:18
すいません。
perlで、以下のような処理を実現したいのですが、
作成された方がいらっしゃいましたら、ご教授お願いします。
(1)「javaのプログラム内の全てのコメントを削除」して表示する
(2)「javaのプログラム内のコメントのみ」を表示する
よろしくお願いします。
正規表現使えばいいのでは?
Javaのコメントはネスト不可なのか
でも、もしJavaがコメント内の文字列リテラルとかも認識するなら
正規表現だけでは対応できないよ、多分
とりあえず正規表現を使わないなら
行コメントは簡単だろうけど、ブロックコメントは
コメントの中にいるかどうかっていう状態変数を作って
読みこみながら処理していけばいい
(コメントの中にいなくて/*にであったらコメントに入る)
(コメントの中にいて*/に出会ったとき、コメントの外に出る、みたいな感じで)
Javaがコメント内の文字列も認識するなら
コメントの中の文字列の中にいるっていう状態変数も作る
もっと複雑なことをする予定ならパーサを作るほうが楽
注意すべきは文字列リテラルの中にコメントと同等のシーケンスが入っていた場合。
System.out.println("/*うんこ野郎!*/"); /*どうだ参ったか!*/
Parse::RecDescent
で、文字列とコメントとそれ以外を定義
ふーん