Perl初心者スレ(マジレス回答)
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
マジレス?
じゃあ遠慮なく
>>1
板荒らすために立てたんじゃないならさっさと削除依頼しろクズ
本スレでさえ閑古鳥が鳴いてるのに次スレ立てるから荒らし予備軍の温床になってんだよ
今日の糞スレ乱立を見ればわかるだろ 初心者なので CGI と Perl の区別がつかないこともあると思いますが、
どうぞ質問してください。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
回答者が現れるまで待ちましょう。
[プログラミング自体の経験が無いひとはまずココを読む]
とほほのperl入門: ttp://www.tohoho-web.com/wwwperl.htm
[厳選・オンラインドキュメント]
perldoc.jp: ttp://perldoc.jp/
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
# [Perl 日本語処理の基礎の基礎]
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。
上記の記述は1行で書くこともできます。
use encoding 'cp932'; # [Perl 日本語処理]
初心者にはこれが一番あってると思います。
徐々に経験を積んで、難しい記述にチャレンジしていきましょう。 そもそもプログラム初心者にPerl選択などありえない 初めてのPerl第6版と赤らくだ本は分量的にも内容的にもほぼ同じだしな ↑ながらく機能していない上にCGIの質問をすると怒られます。
Perlの質問をするとPHPの回答が返ってきます。
それでも構わないなら、どうぞ。 プログラム初心者じゃなくてPerl初心者な。PHPは卒業な。 PHPでいう、in_arrayは
Perlではなんて関数ですか? >>19
ありがとうございます。
それからもうひとつ、
array_uniqueに相当する関数はどれでしょうか? my %uniq = map { $_ => 1 } @array;
my @array_uniq = keys %uniq;
%u = map {$_,1} @a;
@u = keys %u;
#チヂメテミタ my @array_unique = keys %{{map {$_,1} @array}};
perl 5.14 以降なら
my @array_unique = keys {map {$_,1} @array}; ひと頃List::Utilが湧いたのはPHPとの比較が原因か ここでList::Utilを持ち出し、直後からスレが荒れるのが定番。 あるサイトにアクセスして数値を取得してreturn $num;で値を返す関数を作ったとします
get_num();
my $num=200
while(1)
{
if(new_num() >=$num)
{
okと表示
}
}
okがうまく表示されません
毎回get_numでサイトにアクセスして取得しているというのが悪いんでしょうか?原因がわかりません教えてください
new_num()で取得した値は $numより大きいです
大きいのになぜか比較されずにスルーで何も表示されずループです >あるサイトにアクセスして数値を取得してreturn $num;で値を返す関数を作ったとします
↑これは get_num() のことですか?new_num() のことですか?
get_num() は return $num; しないんですか?戻ってきた値は使わないんですか?
>毎回get_numでサイトにアクセスして
↑ get_num() は while の中にありませんが、この外にループがあるんですか? use strict; 落ちか
腕を上げたようだな、モダンPerl。 >>31
$|=1;
それかprint "ok\n";
改行いれとけ >>31
マジレスすると
お前みたいな低脳には無理 荒らしの連立てしたスレを伸ばそうとしてる>>31は荒らし
消えろやゴミが $|=1;
my $num=200; ←セミコロン忘れるな
while(1){
if(get_num() >= $num){ ← get_num()、な
print "ok\n"; ← うるせぇやつがいるから改行、な
last; ← これなけりゃ無限ループだわな
}
sleep(60); ← Web にアクセスするなら忘れるんじゃねぇぞ
} なんで>>31みたいなカスがプログラミングなんかに手を出したのか疑問。 >>43
そんなのが疑問になるのは
お前が馬鹿だからじゃないだろうか。 文字列 $str の末尾の「.cpp」を「.o」に置換し新たな文字列 $new_str を生成したいのですが
s/// だと元文字列を書き換えてしまいます
コピーしてから置換でも良いのですが、書き換えずに置換する関数や演算子はないでしょうか? >>47のような害虫はム板から駆除しなければならない。 >>47
演算子一覧くらい検索すればいくらでも出てくるだろ
それすら検索できないって本物の精神異常? 煽り叩きに加えて今度はイコール厨まで参戦ですか
ほんとスレの空気を悪くすることに関しては息ぴったりですねお前ら このスレは>>31>>47叩き基地害イコール厨等まともじゃない奴らの隔離スレだからな。 >>51
ありがとうございました
手元の資料に無かったので調べたら割と最近の仕様みたいですね >>57
さっさと初心者を卒業しろよってことかな?
出所者を見送る看守のようだ。 >>47はマジでクズ
2chを代理検索か何かと勘違いしてないか? 質問してこういう扱いうけて荒らしてるのかこの粘着くんはw >>35
うまく出力されました
$|=1;とは何ですか?
改行の理由も教えてください
>>42
$|=1;をつける理由は?
lastだとループが終わってしまうので >>32
>大きいのになぜか比較されずにスルーで何も表示されずループです
ループして困っているのか、ループしたいのか質問をはっきりしろ こういう糞みたいな質問してる連中がム板のレベルを下げてる 馬鹿の>>63-64が釣れたwww
マジ釣り掘りwwwww >>61
荒らしは質問すらしてないよ。
質問者になりすましての煽りは入れてるが。 何で分かるの?
あ、ご本人様ですか。
荒らしもやりながらこんな場末の糞スレチェックまでご苦労様です。 プロキシのレスポンスタイム計るにはどうするの?
教えてくれ
6.5s
5,8sとかあるだろ?あれ それはPerl限定の話でもなさそうだし、流石にWebProg板で聞いてくれ PHPでいうマジッククォートみたいなのない?
sjisで送信するとき表とかがエスケープされずにエラーでちゃうんだけど
自動でエスケープしてくれる関数みたいなの無いの?
教えてください >>71
ふたつのことを混同してしまってると思われる
「Perl XSS対策」「Perl Unicode」でそれぞれググれ
そして前者(XSS)にに関しては今後はWebProgへどうぞ >>72-74
追い出すなって。
ここは>>71みたいな社会のゴミ用隔離スレなんだからさ。 PHPのマジッククォートとSjisっておんなじものなのか?
微妙にやること違うと思うぞw 初心者でUnicodeはきついかもな
ごちゃごちゃしてて何がなんだかさっぱり分かんない
初心者にはshiftjisがいい Perlスレの頭にUnicode絡みのテンプレなかったっけ >>80
確信ないなら書くなゴミ
さっさと失せろキメェんだよ それ言うなら use utf8; だろ
EncodeはUnicode以外だって扱えるんだから
でも牙が伸び過ぎると自滅してしまうこともある
ttp://blog.nakatanigo.net/archives/50474313.html 88はいつもただの質問者を荒し扱いしたりしてる奴だろう、放置よろ。 初心者の彼女がjacode.pl使ってて時代の変化を感じた いつまでもEncodeでエンコしててもしょうがないしな ttp://kotobank.jp/word/えんこ ActivePerl5.16.1使用中です。
---
print DAT @dat;
---
このようにして配列を書き出そうとしたのですが
なぜかテキストファイルに繁栄されません。
何か情報をご存知の方いらっしゃいませんか? ファイルハンドルであろうDATのopen文はいかに 以下の一行スクリプトに文字を食わせて「XX月◯◯日のお知らせ!」の次の行から「-----」の前までを取り出そうとしています。
最期のs/^ +//は各行の先頭の全角の空白を取ろうとしたのですが、これが働きません。が、抜き取り自体は成功していました。
逆に、use utf8とすると/正規表現/が全くひっかかりらず何もprintされません。
perl -e '
#use utf8;
while (<>)
{
if (/\d+月\d+日のお知らせ!/) { last; };
#skip the line;
};
while (<>)
{
if (/-----/) { last; };
s/^\s+//;
s/^ +//;
print;
}' perl -e '
use utf8;
while (<>)
{
if (/\d+月\d+日のお知らせ!/) { last; };
#skip the line;
};
while (<>)
{
if (/-----/) { last; };
s/^\s+//;
{
no utf8;
s/^(?: )+//;
}
print;
}' どうもです。
状況なのですが、use utf8すると全くおかしいです。/\d+月… /のマッチが全く成功しないので、
目的通りの結果が出ません。uset utf8しないとうまく動きます。
実はMacのautomatorから呼び出されていてGet text from Webpage actionでとってきたテキストが
このperlに渡されているのですが…UTF-8の文字が来ているはずなのですが(指定のWebページのcharsetはUTF8)。
それはさておき
( ) / (?: )
の指摘ありがとうございました。上の行のs/^\s+//;と合わせて
s/^(?:\h| |\xc2\xa0)+//;
に書き換えました。
non breakable spaceも行頭に混じっていたので、そのUTF8表現のU+c2a0も追加。
これできれいに行頭の「空白」がとれて左詰めになりました。
とりあえずuse utf8;だけ殺して一見うまく動いているのでそれで利用を開始しました。
個人の趣味の自動化目的なのでそんな感じでまずはゴーしてしまいます。 utf8プラグマは作ったひとは使うのが簡単だと考えているんだろうけど、
使うひとにとっては非常に難しい。こういった処理モデルを理解しろと
いうほうに無理がある。結論としてはutf8プラグマは使わないほうが
よい。 もう省略の美学とか無くていいから(涙)
ぜんぜん意味がわからない
たすけて