Perlについての質問箱 ..
643:デフォルトの名無しさん
08/09/05 21:16:35
>>640
釣りだといってくれ
644:デフォルトの名無しさん
08/09/05 21:32:53
いつもの独り言の人はもしかしなくても 5.10 だよ。
645:デフォルトの名無しさん
08/09/05 21:36:27
ああ、いつもの人か。レスすんじゃなかった orz...
646:デフォルトの名無しさん
08/09/05 22:14:45
URLリンク(trends.google.com)
CPANやべええ
どっかの株価1円企業みたいだ
647:デフォルトの名無しさん
08/09/05 22:27:30
Perlってスレッドプログラミングとかってできないの?
Aというスレッドと
Bというスレッドがあって、
AとBを同時に走らせるみたいな。
648:デフォルトの名無しさん
08/09/05 22:30:35
>>646
今時わかってる連中が CPAN に用がある時は Google なんぞ通さずに CPAN Search をひっぱたくからな。
649:デフォルトの名無しさん
08/09/05 22:37:33
>>646
日本一位なのか
650:デフォルトの名無しさん
08/09/05 22:47:10
>>647
>>223
651:デフォルトの名無しさん
08/09/06 00:06:09
>648
あ、CPAN自体に辿り付くのにgoogle使う……
652:デフォルトの名無しさん
08/09/06 00:30:52
ブックマークから自分のアカウントを開く
653:デフォルトの名無しさん
08/09/06 00:33:42
Firefox の smart keyword に登録してる。
654:デフォルトの名無しさん
08/09/06 00:36:26
search.cpan.org と毎回入力してる。ブックマークしろよと打つたびに思う。
655:デフォルトの名無しさん
08/09/06 09:30:16
アロー演算子を使う局面や場面は、
どういうときと、どういうときと、どういうときがあるの?
自分が知ってるのは、
「リファレンス経由で配列要素にアクセスする」
っていう場合だけど、そのほかにも、
オブジェクト指向のときもアロー演算子を使うの?
656:デフォルトの名無しさん
08/09/06 10:36:40
●配列に限らない
●Perlにおいてオブジェクト指向はリファレンスを利用
なので、>655の質問は少しだけ着目点がズレてる。
657:デフォルトの名無しさん
08/09/06 10:53:06
URLリンク(www.rwds.net)
パッケージの説明として、これはわかりやすい。
658:デフォルトの名無しさん
08/09/06 10:55:41
package main;
use Stone;
my $obj = Stone->new('石灰岩','100');
-----------------------
↑たとえばこれ。
これってオブジェクト指向だからアロー演算子を
使ってるという理解でいいよね?
659:デフォルトの名無しさん
08/09/06 11:01:38
それでhelpのタイポを見つけたら
どこに通報すればいいの?
660:デフォルトの名無しさん
08/09/06 11:11:19
print "a";
die;
------------------
↑このコードだと、
Died at 6.pl line 3.
a
という出力になるのに、
-------------------
print "a\n";
die;
-------------------
↑このコードだと
a
Died at 6.pl line 3.
という出力になる。つまりひっくりかえってるんだが、
なんで?
661:デフォルトの名無しさん
08/09/06 11:18:48
気分がいいのでレスしちゃう。
>658 それはそうとして>656は無視かい?
>659 ココロの110番に
>660 flush
662:デフォルトの名無しさん
08/09/06 11:19:55
C言語とPerlは近い部分があると聞いたのですけど、ほんとでしょうか。
それを聞いてPerlも勉強してみたいと思ったので。
printf が print だったり、微妙に違うようですが。
難しいのかな。
663:デフォルトの名無しさん
08/09/06 11:22:52
perlは超カンタンです。
なにしろ俺サマでさえ、一ヶ月もあれば
基本は理解できます。
664:デフォルトの名無しさん
08/09/06 11:23:51
サブルーチン呼び出すときに、
aaa;
だとウオーニングが出るんだが、
aaa();
だとウオーニングがでない。つまり、
サブルーチンを呼び出すときは必ず
aaa();と、パーレンをつけなければいけない、というルールなの?
665:デフォルトの名無しさん
08/09/06 11:25:03
>>662
C言語をマスターしているのなら、普通の頭脳の持ち主なら、1週間で完全に
習得できます。
666:デフォルトの名無しさん
08/09/06 11:25:38
自己解決した。
サブルーチンの定義が、
ソースコードの最初のほうに書いてあれば
()をつけなくてもできるということか。
だったら、サブルーチンの定義は
ソースコードの後ろでなくて、
最初のほうに書いたほうがいいんでないの?
667:デフォルトの名無しさん
08/09/06 11:29:43
>662
printfもある。
>666
お好きなように。
俺はCで言うところのプロトタイプ宣言だけしてるけど。
668:デフォルトの名無しさん
08/09/06 12:42:31
unlinkって自分は消せないのね。
669:デフォルトの名無しさん
08/09/06 12:45:37
日本語のファイル名ってunlinkで削除できないの?
「あ.txt」とか。
670:デフォルトの名無しさん
08/09/06 12:54:58
SND_ASYNCのフラグの書き方と指定の仕方がわからない。
URLリンク(homepage3.nifty.com)
671:デフォルトの名無しさん
08/09/06 12:55:45
Win32::Sound::Play(SOUND, [FLAGS])
この例を見て、
Win32::Sound::Play("file.wav",[SND_ASYNC]);
と書いたが、なんか違うようだ。
672:デフォルトの名無しさん
08/09/06 13:23:23
perl2exe
おもしろ
673:デフォルトの名無しさん
08/09/06 21:43:36
>671
なんでリストにしてんの?
674:デフォルトの名無しさん
08/09/06 21:56:11
>>673
書き方間違ってる?
書き方のサンプルがないから
正直、よくわからんかった。
675:デフォルトの名無しさん
08/09/06 21:57:28
use feature qw( :5.10 );
system q|cls|;
sub abc{
state $a=10;
say $a;
$a--;
if ($a>=5) {
abc();
}
}
abc;
------------------------------
サブルーチンの再帰呼び出しで、
サブルーチン内部の定義部分で、
自分自身を呼び出すときには、
()パーレンの記述は必須なんだね。
これを省略しようと少し考えたけど
無理っぽい。
676:デフォルトの名無しさん
08/09/06 21:59:11
&アンパサンドをつけてサブルーチンを呼び出すのは
古いやり方なので極力さけましょう、とか書いてあるので
&をはずして呼び出そうとするんだけど、そしたら今度は
()パーレンの記述が必須になってしまう。()パーレンのほうが
100倍メンドイと思うんだけど。
、、と思うなら、ソースコードの最初のほうに
サブルーチンの定義を書けばいいじゃん、と思ったけど
通常の関数ならそれでいいけど、再帰の場合はやっぱり無理なのね。
677:デフォルトの名無しさん
08/09/06 22:01:10
stateとmyって実質同じだよね。
どっちも変数をプライベート化して、
どっちも歴史狩る変数っていう。
ただ、stateの方は一回だけ実行されるという
違いがあるけど。
それで、すべてのmyをstateに変更しようかなと
おもうんだけど 、stateにすると何か問題ある?
678:デフォルトの名無しさん
08/09/06 22:01:58
ちなみに歴史狩る変数っていうのは、
過去の歴史あるソースコードを無効にする
って意味です。
679:デフォルトの名無しさん
08/09/06 22:10:44
open( FD, "| C:\\WINNT\/NOTEPAD.exe");
↑これでメモ帳を開くのと、
system関数でメモ帳を開くのと、
何か違いはありますか?
見た目は同じように見えるんですが。
680:デフォルトの名無しさん
08/09/06 22:31:45
>674
一般的に、[ ] は省略可能な要素を意味する記号。
681:デフォルトの名無しさん
08/09/06 22:35:24
>>667 効果が全く違うぞw
682:681
08/09/06 22:36:20
>>681はアンカーミス。>>677への突っ込み。
683:デフォルトの名無しさん
08/09/06 22:42:21
>675
サブルーチンの宣言と定義を切り離せばいける。面倒だけど。
use feature qw/:5.10/;
sub abc; # 宣言だけして…
sub abc { # こっちで定義
state $x = 10;
say $x--;
if ($x >= 5) {
abc;
}
}
abc;
684:デフォルトの名無しさん
08/09/06 22:52:15
>>683
あー
内容が書いてなくても
宣言だけ先にしてあれば
()パーレン無しでもいけるんだー
685:デフォルトの名無しさん
08/09/06 22:53:43
>683
Cとかに慣れるとそんなに面倒でもないけどねー。
さくっとコメントでサブルーチンの説明するときとか、長くなるんで先頭に並べちゃってる。
>676
省略はPerlの美学なので、
出来る限りタイプを少なくするという思想は正しい。
だけど、わざと面倒な書き方をしておいて、
かつ、そこから外れた書き方をしたらエラーが出るようにしておく、という思想もある。
もしミスった時に、こっちの方が分かりやすいからだ。
この2つはどっちも正しい。
どっちを採用するかは自分で決めるしかない。
仕事でやっているならば、諸乳母で指定される場合があるのでそれに従おう。
686:デフォルトの名無しさん
08/09/06 22:55:54
諸乳母ってなんだ、職場。
687:デフォルトの名無しさん
08/09/07 04:25:30
質問です。
先日MacPortsで自動アップデートを実行してから下記のエラーがperl実行時に出てくるようになりました(その前までは出なかったのに…)
Use of uninitialized value in concatenation (.) or string at /opt/local/lib/perl5/5.8.8/darwin-2level/Scalar/Util.pm line 30, <> line 6.
CPANの自動アップデートも行ったのですが、同じエラーが出続けてしまいます。
プログラム事態は特に問題なく実行できているのですが、これを解決するにはどうしたら良いのでしょうか。
よろしくお願いいたします。
MacOSX 10.5.4
MacPorts 1.600
Perl 5.8.8
688:デフォルトの名無しさん
08/09/07 05:22:27
>>687
no warnings;
689:デフォルトの名無しさん
08/09/07 06:24:49
no warnings野郎がキチガイだから無視しないとだめ。
で、回答だが、変数を初期化しないのが理由でウオーニングが出ているのだから、
$aとかの変数をすべて、my $aとかで初期化すれば解決する。
それはUtil.pmの30行目と
本体の6行目にある。
690:デフォルトの名無しさん
08/09/07 06:25:56
ところでみんなこのシリーズみてる?
perl tutorial
URLリンク(jp.youtube.com)
691:デフォルトの名無しさん
08/09/07 06:39:15
>>688
Scalar::Utilの30行目の警告という事は分かってるんです。消し方も。
ただ気持ち悪いじゃないですか。
CPANで最新のソースを調べても特に修正は無いし、
実際のソースを見てもどうしてそうなるのか分からないんですよね。
URLリンク(search.cpan.org)
--------------------------------------------
if (grep { /^(dualvar|set_prototype)$/ } @_ ) {
require Carp;
Carp::croak("$1 is only avaliable with the XS version"); #エラーにある30行目はここ
}
--------------------------------------------
$1ってのに値が入ってないとかそういう意味だと思うのですが、
値が入らないのであれば、この29~30行目は実行されないはずではないのでしょうか…。
初心者なりに色々考えてるのですが全く分からない…。
692:デフォルトの名無しさん
08/09/07 06:45:48
>>689
no worningsはやっぱりダメですよね!
どの本見ても書いてあったので、必ず入れてます。
本体の6行目というのは、Util.pmを直接の
本体という意味でしょうか?(どいつが本体かわかん無い…)
Util.pmを直接自分の書いたスクリプトは実行していなく、
自分の書いたスクリプトの6行目は
use Encode;
なので、なんも問題が無いと思うのですが。
すみません、ご教授下さい。
693:デフォルトの名無しさん
08/09/07 07:05:38
ここで空気を読まずに別の質問
Perlもサイドエフェクトってあるの?
694:デフォルトの名無しさん
08/09/07 08:10:35
>>691
grepを一旦、@aで受けるとかどう?
if (my @a = grep { /^(dualvar|set_prototype)$/ } @_ ) {
require Carp;
Carp::croak("@a is only avaliable with the XS version"); #エラーにある30行目はここ
}
695:デフォルトの名無しさん
08/09/07 11:51:40
>>691
こんな感じの事が起きている。
$_ = q/abcd/;
{
m/^(abcd)$/;
print "a:$1\n";
}
print "b:$1\n";
しかし、grep BLOCK LIST の代わりに grep EXPR,LIST を使っても同じ結果になるので要注意。
理由は未確認。(内部的に BLOCK になっているのだろう)
このエラーが放置されている理由は、おそらくこのエラーが報告されていないから。
なにしろ、これはXSバージョンが使えない場合かつユーザーが(デフォルトで輸出されない)特定の
処理を要求した場合のみに発生するエラーだから。
今までエラーが出なかかったのは、単にXSバージョンが使われていたからだろう。
で >>687 にあるようにプログラムの動作に問題が無いならば、dualvarまたは(/かつ)set_prototype
を必要無いのに要求していたという事なので、単にこれらを要求する事を止めればよい。
696:デフォルトの名無しさん
08/09/07 12:33:07
>>695
$数字はダイナミックスコープだからブロックを抜けたら元に戻るというのは
その通りだが、今回の例は抜けてないので違うんじゃない?
697:デフォルトの名無しさん
08/09/07 15:38:34
コマンドラインで引数を与える時に、間違った変数名で入力した場合に
Usageを出したいのですが、どうすればいいでしょうか?
698:デフォルトの名無しさん
08/09/07 15:40:28
正規表現で判定するか、CPANからモジュール引っこ抜いてきて判定する
後はprintでusage出せばおk
699:デフォルトの名無しさん
08/09/07 15:43:47
その正規表現の方法がわからないのです。
C:xxx.pl -aaa=1を間違って
C:xxx.pl -aa=1と入力なのですが・・・・
中で変数を宣言してなくて、外でしているのですが、変数名を見ることができるのですか?
700:デフォルトの名無しさん
08/09/07 15:46:07
何を言っているのか意味不明
701:デフォルトの名無しさん
08/09/07 15:51:00
C:xxx.pl -aaa=1を間違って
C:xxx.pl -aa=1入力した場合エラーをだしたい
-aaa=1 が正しく
-aa=1 が間違い
プラグラム中には
our $aaa は宣言してますが
our $aa は宣言していません
なのですが
説明下手ですいません
702:デフォルトの名無しさん
08/09/07 16:13:28
ああ、そうか。
引数で -aaa って言ったら、普通は a が3つって解釈すると思う。
んで、素直に if 文じゃダメ?
703:デフォルトの名無しさん
08/09/07 16:14:21
>>694-696
XSや、エラーを出す原因となっているスクリプト部分や、
dualvar、set_prototypeなど何だか分からない言葉が
大量に出てきたので、勉強して出直してきますw
自分の書いたプログラム以外の物を編集するのは
気が引けるので、環境を整える方向で考えてみます。
ありがとうございました。
704:デフォルトの名無しさん
08/09/07 16:17:05
>>701
必要な変数に値が与えられたかどうかを判別するので対処出来るのでは?
与えられた引数全てを見れるような方法が欲しいってこと?
705:デフォルトの名無しさん
08/09/07 16:54:19
>>697
> コマンドラインで引数を与える時に、間違った変数名で入力した場合に
> Usageを出したいのですが、どうすればいいでしょうか?
?を使えばいい。
706:デフォルトの名無しさん
08/09/07 17:12:25
引数のオプション名を変数名に紐付けるのではなく、
ハッシュキーに紐付けることで少し楽になる。
あとは Hash::Util を使ってロックした上でエラートラップするなり、
keys %hash リストの各要素と順次 eq するなり。
707:デフォルトの名無しさん
08/09/07 17:23:51
>>699
なんでそんな入り組んだややこしい遠回りで手の込んだことをしたいの?
ふつうにGetopt::Longで処理するのではだめなのか?
708:デフォルトの名無しさん
08/09/07 17:27:42
宣言されている変数に値を代入したいという意味なら、こうするのはどうだろうか?
# 宣言時にとりあえず空文字をいれておく
our $aaa = "";
our $bbb = "";
for (@ARGV) {
defined ${$1} and ${$1} = $2 if( /-(.+)=(.+)/ )
}
709:デフォルトの名無しさん
08/09/07 19:18:10
>>696
今回は grep BLOCK LIST なので、マッチ演算が行われた(目に見える)ブロックから抜けている罠。
695をブロックで書いたのは $数字 のスコープから抜けている点がブロックと同じだからなんだけど、
組み込みのgrep関数のソース(pp.c 内の pp_grepstart)を見たら中でENTER を行っていた(==grepの
中にブロックに入る/抜ける時と類似の処理が含まれていた)ので、ブロックでも構わなくね?
そうでなくても組み込み関数のオーバーライドがありうるので、関数はブロック(サブルーチン)のよう
に扱う方が無難だと思うのだが、Scalar::Util の作者はそう考えなかったみたい。
710:デフォルトの名無しさん
08/09/07 19:50:06
>>709
grepのあとがブロックになってるのを見落としていた。スマン。
で、これどうみてもScalar::Utilのバグじゃね?
711:デフォルトの名無しさん
08/09/07 20:17:01
URLリンク(itpro.nikkeibp.co.jp)
この人て有名なの?
712:デフォルトの名無しさん
08/09/07 20:31:43
【コミュニティーサイト作成有志募集!】
現在コミュニティーサイトGaccoで有志を募集しています。
詳しい概要等は
→URLリンク(www36.atwiki.jp)
こちらをご覧下さい。
・プログラミングができる方
(現在技術陣は6名です)
・ウェブデザイン・画像編集能力がある方
(現在デザイン陣は2名です)
・宣伝能力のある方
(人員募集やサイト完成後の宣伝等。動画編集ができると○。)
を募集しています。
気軽にIRCに参加、またはsuteあっと2ch.bona.jpまでメールを下さい。
スレッド:URLリンク(ex14.vip2ch.com)
713:デフォルトの名無しさん
08/09/08 05:24:01
perlを始めて日の浅い初心者です。
練習として、google検索をしてその件数を出すというプログラムを書いているのですが、
出力と手動で検索した時の件数に誤差が生じます。
ソース挙げておきますので、良ければご指摘下さい。
よろしくお願いします。
use Web::Scraper;
use URI;
use utf8;
use Encode;
my $scraper = scraper { process '/html/body/div[2]/p/b[2]', 'kensuu' => 'TEXT';};
my $uri = new URI('URLリンク(www.google.com)');
$uri->query_form( hl => 'ja' , q => 'コミュニケーション');
my $res = $scraper->scrape($uri);
print $res->{kensuu};
出力
33,500,000
手動で検索
33,900,000
となってしまいます…。
714:デフォルトの名無しさん
08/09/08 05:38:29
use feature qw( :5.10 );
system q|cls|;
for (1..120) {
state $a="a";
print $a," ";
$a++;
}
say"";
#----------------------
↑なにこれ
楽しい
from
URLリンク(jp.youtube.com)
715:デフォルトの名無しさん
08/09/08 05:46:48
use feature qw( :5.10 );
system q|cls|;
open FH,">","1.txt";
for (1..120000) {
state $a="a";
print FH $a," ";
$a++;
}
say "done.Please check out 1.txt";
#---------------------------------
たのしー
これって出力結果を要素ひとつづつ
配列に入れたりもできるのかな?
716:デフォルトの名無しさん
08/09/08 05:58:40
use feature qw( :5.10 );
system q|cls|;
open FH,">","4.txt";
for (1..12000000) {
state $a="a";
print FH $a," ";
$a++;
}
#--------------------------
↑これで1千2百万回まわしたら、
70MBのテキストファイルになって、
エディタで開いたら表示がぶっ壊れた
URLリンク(kazato.run.buttobi.net)
717:デフォルトの名無しさん
08/09/08 06:12:48
>>713
$uri->query_form( hl => 'ja' , q => 'SEX');
この検索ワードだったら
手動とスクリプトで、
ぴったり件数一致しました。
718:デフォルトの名無しさん
08/09/08 06:15:49
何件か試してみたけど、
日本語のキーワードだとずれる、
アルファベットのみだと、ぴったり一致する、
という特性があるみたいですね。
719:デフォルトの名無しさん
08/09/08 06:18:33
俺も何件か試したが、なんでズレるんだ?
720:デフォルトの名無しさん
08/09/08 06:31:19
>>719
英語のみのキーワードだとずれないでしょ?
721:デフォルトの名無しさん
08/09/08 06:50:05
ずれないけど検索するんなら、713もコミュニケーションしてるし、日本語だろうからあんまり意味ないんじゃね?
722:デフォルトの名無しさん
08/09/08 06:55:56
日本語で検索しなければ良い。
723:デフォルトの名無しさん
08/09/08 11:27:12
シェルも使える人にお聞きしたいのですが、Perlとシェルって共通してる部分ありますか?
シェルも勉強したいと思ってきたので。。。
724:デフォルトの名無しさん
08/09/08 12:12:12
my $q = CGI->new();
これを
&Init($q);
みたいにしてその中で
$q->param('filename')
みたいな処理を行いたくて
CGIオブジェクトをいろんな引数に渡したいのですが
どうやってやればいいのですか
725:デフォルトの名無しさん
08/09/08 12:17:37
sub Init { my $q = shift; }
726:デフォルトの名無しさん
08/09/08 12:22:19
おお、そんなことが ありがとうございます
どこら辺の単語で出てきますか
727:デフォルトの名無しさん
08/09/08 12:23:18
>>723
記述的には、C程似て無いとは思う
でも、言語なんて 表示、条件判定、ループ、サブルーチン作成。
こんだけ分かれば、大抵のものは組めるけどね
728:デフォルトの名無しさん
08/09/08 12:26:58
>>723
どちらもソフトウェアという点が共通してるよ。
729:デフォルトの名無しさん
08/09/08 12:48:54
> ・シェルスクリプトのことをシェルってゆーな
なんとなく某所のテンプレから借りて来た。
730:デフォルトの名無しさん
08/09/08 12:50:39
>>713-722
多分だけど、googleに限らず大手の検索エンジンなんか数百台〜数千(数万?)台のサーバーで
構築されてるんだろうから、毎回必ず同じ結果が返って来るとは限らないんじゃない?
(Yahooなんかは、同一環境でもCookeiが違えば、件数どころか上位十件が全然違うこととかもあるw)
たしかgoogleは、ブラウザの HTTP_ACCEPT_LANGUAGE あたりで使用言語の優先順位を判定して
各言語のサーバへリダイレクトしてるとか聞いたことある。
(例えば、一般的な日本語ブラウザでgoogle.comにアクセスしても、co.jpの方へ飛ばされる。とか)
>>726
「perl サブルーチン 引数」とか「perl shift」とか。
731:デフォルトの名無しさん
08/09/08 14:19:56
PerlとPHPはまったく別物なのでしょうか?関連性とかあるのかな、と。
その辺のことよく知りません。
732:デフォルトの名無しさん
08/09/08 14:35:03
>>731
ないから諦めてください
733:713
08/09/08 15:19:52
>>717-722
皆様ありがとうございます。
>>730
そうなんですか…。
じゃあ日本語を検索した際、プログラムで手動と同じ検索結果を出そうとするのは事実上困難って事ですよね…。
わかりました。
ありがとうございます。
734:デフォルトの名無しさん
08/09/08 15:25:32
どういう通信するか観察してきちんと真似てやればなんとかなると思うけどね。
735:デフォルトの名無しさん
08/09/08 16:19:48
>726
どこらへんも何も、普通に引数を渡してるだけだぜ?
736:デフォルトの名無しさん
08/09/08 21:59:04
配列から指定の要素番号を抜き出して、
削除するってできるの?
popの要素番号指定版。
$number = pop @array[5];
みたいな。@arrayの要素番号5が抜き出されて
$numberに入り、なおかつ
@array[5]は消え去る。
737:デフォルトの名無しさん
08/09/08 22:25:25
>>735
つsplice
738:デフォルトの名無しさん
08/09/08 22:34:02
>>737
つ>>736
739:デフォルトの名無しさん
08/09/08 23:44:23
>>39お願いします
740:デフォルトの名無しさん
08/09/09 00:01:37
>>738
頭から1行ずつ読めばそのうち任意の行に到達するよ。
741:デフォルトの名無しさん
08/09/09 00:05:42
ところで>>713はなにをやっているの?
CGIでもないようだし、
にも関わらずWEBのデータ-を取ってきて
なんか遊べるようだが、これって
なんで名前なの?
どういう本にのってるの?
742:デフォルトの名無しさん
08/09/09 00:18:37
>>741
perl スクレイピング
でぐぐれ
743:デフォルトの名無しさん
08/09/09 00:27:08
へーこんな用語があったんだ。
初めて知ったわ。
俺の書いてきたPerlスクリプトは9割がスクレイピングだー
744:デフォルトの名無しさん
08/09/09 00:30:41
オライリーからも本出てるよ。
俺の初めて書いたperlはそれの第一章とかだった気がするw
745:デフォルトの名無しさん
08/09/09 02:00:44
#------------------1
my @a=(1..10);
map {$_ = $_ *2} @a;
print "@a\n";
#--------------------1
#--------------------------
#-----------------------2
my @a=(1..10);
map {$_ = $_ *2} (@a);
print "@a\n";
#------------------2
↑これ、1も2もどっちも
実行できるんだけど、mapの配列の()パーレンは
必要ないってこと?
746:デフォルトの名無しさん
08/09/09 02:36:15
●1
map {print $_,"\n" } 0..10;
これだとちゃんと1〜10が表示されるのに
●2
map {print $_,\n } 0..10;
これだとなぜかアドレスが出てしまう。
なんでだろう?
747:デフォルトの名無しさん
08/09/09 03:09:08
my @a=qw(aaaaa bbb ccc ddd eee fff abf haty juy ade il erat tyu dfg gu );
my @b=grep {$_=~'a'} @a;
print "@b\n";
#---------------------------------------
grepのときに、スマートマッチ〜〜使えないのか。
my @a=qw(aaaaa bbb ccc ddd eee fff abf haty juy ade il erat tyu dfg gu );
my @b=grep {$_~~'a'} @a;
print "@b\n";
#--------------------------------
↑これだとエラーが出る。=〜にしないとだめらしい。
748:デフォルトの名無しさん
08/09/09 03:53:32
my %hash;
$hash{name}='john';
$hash{age}='25';
$hash{city}='london';
print "@{[%hash]}\n";
↑なんでこれでハッシュの中味が出力されるの?
749:デフォルトの名無しさん
08/09/09 04:03:47
何故〜なの?という質問のときは、
「自分は○○されると想ったのに」と付け加えるとアドバイスしやすい。
750:デフォルトの名無しさん
08/09/09 04:24:40
@{[%hash]}
これの記法がまったく意味がわからん
751: ◆TWARamEjuA
08/09/09 06:59:06 BE:980633-2BP(7089)
(grep 1, each %hash)
かな?
752:デフォルトの名無しさん
08/09/09 07:38:24
何年ここにいて、そんな頓珍漢な解答をする? > クソコテ
実行結果すら合わねえじゃねえか
753:デフォルトの名無しさん
08/09/09 07:39:16
URLリンク(jp.youtube.com)
これの最後のやつがちょっと意味わかんないかも。
mapの lcの組み合わせたやつ。
754:デフォルトの名無しさん
08/09/09 07:44:28
$words="a title of a webpage";
$words = join ' ', map {ucfirst lc} split / /,$words;
print "$words\n";
↑これね。
755:デフォルトの名無しさん
08/09/09 07:47:38
>>754
1. スペースで split => 単語毎になる。
2. lc $_ で全部小文字($_ の表記省略)
3. 2. の結果を ucfirst で一文字目だけ大文字化。
4. スペースでくっつける
756:デフォルトの名無しさん
08/09/09 08:00:27
>>736
my $index = 2 ; # 抜きたいindex
my @dat = qw( 1 2 3 4 5 6 ) ;
push @dat, ( splice @dat, $index )[1.. $#dat - $index] ;
print @dat ;
定番
757:デフォルトの名無しさん
08/09/09 08:03:04
>>750
%hash をリストと見做して [] にて無名配列へのリファレンスに突っ込む。
@{} にてそのリファレンスをデリファレンス。
758:デフォルトの名無しさん
08/09/09 08:04:38
>>756
$numberが…
二行に分ければ済む事だけど
759:デフォルトの名無しさん
08/09/09 08:27:14
URLリンク(jp.youtube.com)
これって何やってるの?
760:デフォルトの名無しさん
08/09/09 11:56:00
>>740
了解しました。
一気にその行に行く方法はないんですね。
761:デフォルトの名無しさん
08/09/09 12:24:25
>760
配列にでも突っ込めば?
762:デフォルトの名無しさん
08/09/09 12:42:21
>>760
あらかじめ各行の先頭位置を別に記録してあればseek一発だが、そういう
準備がされてなければ頭から読むしかないね。なにもないときは頭から
改行を頼りに行数を数えるしか何行目か知る方法はないのです。
763:デフォルトの名無しさん
08/09/09 14:04:15
>>761
行数が多い場合、コストが高そうな気がして。。。
>>762
やはりそうですか。
どもです。
764:デフォルトの名無しさん
08/09/09 16:22:23
yyyymmddの日付を比較したいのですが
どうすれば一番簡単ですか
765:デフォルトの名無しさん
08/09/09 16:48:42
比較だけなら、そのまま比較すれば意図した通りの結果になるんじゃない?
766:デフォルトの名無しさん
08/09/09 22:38:26
ディレクトリの中にファイルがあったら
ディレクトリを空にする、という処理をしたいのですが
if(-e "$path/"){
削除処理
}
みたいなものだと、ディレクトリそのものが認識されて
ファイルを認識してくれません
どうすりゃええんでしょうか
767:デフォルトの名無しさん
08/09/09 22:40:18
>>766
ディレクトリを読んでファイルがあるかどうか調べるといいよ。
768:デフォルトの名無しさん
08/09/09 22:57:02
opendirあたりでヤルしかないですか
遠回りだと思ってたけどそれが一番なのかな
769:デフォルトの名無しさん
08/09/09 23:02:59
グロブ使えよ。
中作業だろ。
770:デフォルトの名無しさん
08/09/09 23:05:57
File::Slurpのread_dirが便利
771:デフォルトの名無しさん
08/09/09 23:17:50
これじゃダメ?
if(<$path/*.*>){
削除処理
}
772:デフォルトの名無しさん
08/09/09 23:45:39
>>769
グロブの使い方がわからないであります
>>770
多分はいってないです
>>771
ためしてみます
773:デフォルトの名無しさん
08/09/10 01:45:46
5.10が動くレンタルサーバーってどこがある?
774:デフォルトの名無しさん
08/09/10 02:24:36
事前に膨大な乱数表作っておいて、
substrだけで抜き出して会話するってできる?
775:デフォルトの名無しさん
08/09/10 05:35:12
>774
どういうこと?
776:デフォルトの名無しさん
08/09/10 05:42:43
my $a="g'oiaherugbapowirhaysrgpairhja]ierhgtauw[eifbgaeirhuecf[awierbawirt]aebm";
等の100万語ぐらいの膨大な量の乱数表みたいな
語句のリストをあらかじめ作っておいて、
「hello」って表示したい場合は
「5」番目と「7番目」と「12番目」を抜き出して
表示する」みたいな。
たまたま、うまくつながってるところを見つけると、
ポイントアップです。
777:デフォルトの名無しさん
08/09/10 05:43:46
index と substrを組み合わせたゲームね。
778:デフォルトの名無しさん
08/09/10 06:04:15
(1)
use feature qw( :5.10 );
my $t;
$t=localtime;
say $t;
-------------------------------
(2)
use feature qw( :5.10 );
my $t;
$t=localtime(time);
say $t;
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
(1)と(2)で、実行結果が変わらないのだが、なんで?
どっちでもいいの?
じゃあ、timeの立場は?
779: ◆TWARamEjuA
08/09/10 06:58:15 BE:654023-2BP(7089)
>>752
わはは!
描いて、全然ちゃうわ!と気が付いて投稿窓を閉じたつもりが送信されてたョ(呆)
780:デフォルトの名無しさん
08/09/10 07:03:36
Perlの勉強するときに、実は
ものすごく脳力というか
エネルギー使うんじゃね?
漏れは30分か1時間もやると
ぐったりして集中力がなくなる。
読んでも頭に入らなくなる。
781:デフォルトの名無しさん
08/09/10 07:16:34
>778
捨てハンでもトリッブでもいいから、なんか分かりやすい名前つけたらどうだ?
たぶん皆喜ぶぞ。NG指定するのに。
782:デフォルトの名無しさん
08/09/10 09:10:05
じゃあアンケートとって
スレ住民の51%以上が賛成してたら
そうするよ。
783:デフォルトの名無しさん
08/09/10 10:28:58
住人は>>781の一人だから賛成100%が可決。 俺は通りすがり。
784:デフォルトの名無しさん
08/09/10 14:27:20
トリッブはねえよ
785:デフォルトの名無しさん
08/09/10 16:28:39
>>782
50.4%が賛成だとアウトなのかが気になる
786:デフォルトの名無しさん
08/09/10 19:11:24
Perlで作ったツールをUSBメモリに入れて持ち運びたいんですが、
Perlの動作環境込みで持ち運ぶのは無理でしょうか?
テキストファイルの処理がメインでLinuxとActivePerlでの動作は確認しています。
しかしActivePerlがインストールされているWindowsマシンは少なく、
客先ではActivePerlのインストールも許されていない ので困っています。
787:デフォルトの名無しさん
08/09/10 19:19:03
そのUSBに入れときゃいいやん
788:デフォルトの名無しさん
08/09/10 21:04:57
>>786
「Perlで書いたツールを持ち歩きたいけれど、フルセットの実行環境は要らない」
PAR - Perl Archive Toolkit があなたのわがままを叶えてくれます。
789:デフォルトの名無しさん
08/09/10 21:13:34
PAR の話は「perl.exe だけで足りるかもしれない」と伝えてからでいいんじゃないのか。
790:788
08/09/10 21:37:22
>>789
ああ、もっともだね。先走りました。
791:sage
08/09/10 22:17:56
教えて下さい
windowsでperlを書いてるんですが
$dirName = "C:\\Documents and Settings\\Administrator\\My Documents\\新しいフォルダ";
@res = `"dir \"$dirName\""`;
を実行すると
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
となってしまします。どこがいけないでしょうか?
792:デフォルトの名無しさん
08/09/10 22:29:18
(1) >>2をやっていない??
(2) ディレクトリ名にスペースがあるとエラーになる??
793:デフォルトの名無しさん
08/09/10 22:30:21
>>2じゃなくて>>4だった。
(3)Perlでは日本語のフォルダ名を扱えない??
794:sage
08/09/10 22:42:52
>>792
説明が不足して申し訳ないです。。。
日本語のフォルダが大丈夫なのは確認済みです。
ディレクトリ名にスペースがあると上手くいかないんです。。。
>>4をやっても駄目でした。
795:デフォルトの名無しさん
08/09/10 22:58:31
>>794
$dirName = '"C:\Documents and Settings\Administrator\My Documents\巨乳女子校生・公園で立ちバック"';
@res = `dir $dirName`;
スペースが入るときは "こう 囲んで 渡す" ってとこまでたどり着いてるのに惜しいな。
'これ' と "これ" の使い分けに慣れるといいよ。
796:デフォルトの名無しさん
08/09/10 23:24:02
>>792,793
答えようとするのは良いけれど、
確信がないなら検証してからにしてくれ。
質問者が混乱するから。
797:sage
08/09/10 23:56:44
ご支援ありがとうございます。
>>795
教えてもらった方法で上手く出来ました。
ありがとうございます。
追加で申し訳ないのですが
>>791のコードでディレクトリ名を引数で渡したい場合はどうしたらよいでしょう?
やりたい事のイメージ:
%>perl test.pl "C:\Documents and Settings\Administrator\My Documents\貧乳女子高生・あばらで洗濯"
test.plの内容
$dirName = $ARGV[0];
@res = `dir "$dirName"`;
ちょっとまだ''と""の違いを正確に理解できていない様です。。。
'' => 文字をそのまま代入
"" => 変数を展開して代入
という認識なのですが他にも違いがあるのでしょうか?
798:デフォルトの名無しさん
08/09/11 00:43:41
>>797
'"ああああああ いいいいい うううう"'
これでいけるんじゃない?知らんけどw
799:デフォルトの名無しさん
08/09/11 00:50:29
>>797
$dirName = '"' . $ARGV[0] . '"'; # 消えても懲りずにくっつける
@res = `dir $dirName`;
たぶん期待の動作になると思うんですよね。
>perl test.pl "C:\Documents and Settings\Administrator\My Documents\着衣のふくらみ・貧乳編"
perldoc perlintro
perldoc perlop
辺りに書かれてますが '' と "" では \ がエスケープ文字なのか、文字 \ なのかというのも変わってきます。
800:デフォルトの名無しさん
08/09/11 01:20:03
ところでバッククォートってsystemとおんなじだっけ??
801:デフォルトの名無しさん
08/09/11 02:38:32
>>800
うーん、マニュアル読んだら分かることだしねえ。
どうしても誰かに聞きたきゃ、くだすれ方面だろうね。
くだすれでも引かれるレベルの質問ではあるけど。
802:デフォルトの名無しさん
08/09/11 04:43:45
systemにリストで渡した方が引数を勝手に解釈されなくて済む
803:デフォルトの名無しさん
08/09/11 04:45:32
RMってどういう意味?
ReMake?
804:デフォルトの名無しさん
08/09/11 04:49:05
remember
805:デフォルトの名無しさん
08/09/11 05:01:59
RozenMaiden
806:デフォルトの名無しさん
08/09/11 05:47:59
perlで関数、サブルーチンに渡す引数ってどちらから評価されますか?
807:デフォルトの名無しさん
08/09/11 05:48:26
こないだのScraperの問題、情報調べてきてやったんだけど。↓
ただ、どうしても日本語の検索キーワードが
文字化けしてしまう。いろいろ調べると、Google
Search History の RSS は UserAgent がブラウザ
ぽくないと charaset=utf-8 じゃなく、charset=ISO
-8859-1 を返してきやがる。
808:デフォルトの名無しさん
08/09/11 05:49:14
nanntoka (A, B, C);
↑この場合、Aから実行なのか、Cから実行なのか、って意味?
809:デフォルトの名無しさん
08/09/11 05:50:11
サブルーチンに渡す引数は、左からだな。
関数は知らない。
810:デフォルトの名無しさん
08/09/11 05:55:33
>>808
そうですそうです
>>809
thx、ちなみにそのサブルーチンでは(ryってのはどっかに規定されてる物なの?
811:デフォルトの名無しさん
08/09/11 05:56:25
おー なんだよー
こんな良いページがあるじゃんかよー
ちゃんと教えてくれよー
URLリンク(www.tkrb.jp)
812:デフォルトの名無しさん
08/09/11 06:38:21
今発見したが、これはいったいなんなんだー
URLリンク(choco.lv3.net)
813:デフォルトの名無しさん
08/09/11 11:04:17
>>810
特に決まっていない
814:デフォルトの名無しさん
08/09/11 17:14:04
簡易HTTPサーバを書くのが便利そうなモジュールを探してみたら、
POE::Component::Server::HTTP
POE::Component::Server::HTTPServer
POE::Component::Server::SimpleHTTP
があるようなのですが、どれを使うのが良いんでしょうか?
815:デフォルトの名無しさん
08/09/11 20:55:36
用途による
816:デフォルトの名無しさん
08/09/12 00:26:49
my $q = CGI->new(); # CGIオブジェクト
my $fh = $q->upload('filename'); # ファイルハンドル兼ファイル名
my $temp_path = $q->tmpFileName($fh); # アップロードされた #ファイルのフルパス
fileparse_set_fstype('MSDOS'); # WinIE用パス文字設定
my $filename = basename($fh); # アップロードされたファイルの # ファイル名
my $upload_path = "$upload_dir/$filename"; # 保存先フルパス
move ($temp_path, $upload_path) # File::Copy の moveメソッドで
or die $!; # 移動
close($fh); # おまじない
これを改造して、バカでかいファイルでもタイムアウトしないようにしたいのですが
URLリンク(www.bioinfo.jp)
これをどこに組み込めばできますか
817:デフォルトの名無しさん
08/09/12 01:24:44
下記のバージョンで、CPANからモジュールが
入れられるようになりました。感動した。
・XAMPP(1.6.2)
・Perl Add-on(5.8.8-2.2.4)
・Active Perl(5.8.8.817)
って書いてあるけど、もしかして、
PPMのほかに、CPANから直接入れる方法もあるの?
Activeperl。
818:デフォルトの名無しさん
08/09/12 05:43:51
もしかして、5.10が動くレンタルサーバーってないの?
アメリカで10$のとこ、一個見つけたけど。
819:デフォルトの名無しさん
08/09/12 06:47:03
URLリンク(jp.youtube.com)
forループの条件部って
こうやって書いてもよかったんだ!
820:デフォルトの名無しさん
08/09/12 07:26:47
うぜえ、消えろカス
821:デフォルトの名無しさん
08/09/12 07:42:01
>>820
おまえがな
822:デフォルトの名無しさん
08/09/12 08:05:08
do
{
do
{
do
{
do
{
print "hello\n";
}
}
}
}
やっぱ男だったら
doのネストだよな!
823:デフォルトの名無しさん
08/09/12 08:21:08
{
{
{
{
print "hello\n";
}
}
}
}
よく考えたら、doがなくても
動くじゃないか!
824:デフォルトの名無しさん
08/09/12 08:26:20
for $_(1..10){
print $_*2,"\n";
}
↑これだと動くんだけど、
for $_(1..10){
print "$_*2"."\n";
}
↑これだと動かない。
なんで???
825:デフォルトの名無しさん
08/09/12 08:57:51
・さっきから鳥肌立ちまくり(の俺センスある)
・朝4時に何見てんだ俺……(でもそんな俺かっこいい)
・泣けた、疲れてるのかな……(でも疲れてる俺かっこいい)
・徹夜の上酔ってる俺が来ましたよ(こんな頑張ってる俺かっこいい)
・小3で全クリできたわ(さすが俺)
・89年生まれだけど知ってますw(俺って博識だから)
・ここからの展開が神(俺見たことあるし見所も知ってるんだぜ)
・これを笑えない香具師はセンスない(俺は笑えてるからセンスある)
・これ○○だと思うの俺だけ?(ちょっとずれてる俺かっこいいor「俺もそう思うよ」待ち)
・この時○○は××でした(そんなトリビアも知ってる俺すげー、敬語だし)
・は?表出ろやカス(返事なかった、俺の勝ち)
・まだこのシリーズやってたんだ、しょうがねえから見てやるか(俺が見てやってるんだからありがたく思えよ)
・神曲ktkr ←これより○○の方が神だろ(マイナー曲を挙げる俺って通だなー)
・shita cyan 禁断の海馬に手を加えて 驕れる無能な創造神にでも 成った心算なの(わざわざ歌詞職人やる俺えらいなー)
826:デフォルトの名無しさん
08/09/12 10:17:16
sub abc(@%@%){
my $a=shift;
my $b=shift;
my $c =$a+$b;
print "$c\n";
}
abc(3,4);
↑これでエラーでないとか、
プロトライプの意味ないじゃん!
827:デフォルトの名無しさん
08/09/12 12:27:32
>818
ヒントだけ。「板違い」
828:デフォルトの名無しさん
08/09/12 12:29:41
サブルーチンの引数について勉強するといいと思うよ
829:デフォルトの名無しさん
08/09/12 12:31:31
初心者なのですが質問させていただきます。
push(@array,$item);
これを[splice]を使って書くと、
splice(@array,@array,0,$item);
このようになるようですが、開始位置に書いてある[@array]は、「配列の要素数」と考えて
よろしいのでしょうか。それとも要素数じゃないのでしょうか。
「要素数」は添え字の値より1多い数なので、それを開始位置に書いてあるのがよくわからなくて
混乱しました。
830:デフォルトの名無しさん
08/09/12 12:40:12
>>829
> 「要素数」は添え字の値より1多い数なので、それを開始位置に書いてあるのがよくわからなくて
> 混乱しました。
添え字の値より1多い数が開始位置じゃなかったら、なにが開始位置になるんだょ。
831:デフォルトの名無しさん
08/09/12 12:44:17
OFFSET番目の要素の前に入るから要素数でいいんでない?
わかりにくいから例を書いておく。
@array=(a b c)のとき(要素数は3)、
splice(@array, 0, 0, "x")=(x,a,b,c)
splice(@array, 1, 0, "x")=(a,x,b,c)
splice(@array, 2, 0, "x")=(a,b,x,c)
splice(@array, 3, 0, "x")=(a,b,c,x)
832:デフォルトの名無しさん
08/09/12 13:06:08
>>829
splice の二番目の引数は「読み飛ばす要素数」ではなく「開始対象となる要素の添え字」なので、
開始位置の @array は「要素数」ではなくて「最大の添え字よりも1つだけ大きい数」の意味。
昔は splice(@array,$#array+1,0,$item) で載っていた。
今は splice(@array,@array,0,$item) だけど、これは scalar @array がたまたま $#array+1 と等しい
場合に限ってうまく動く。
もちろん、何も特別なことをしなければ scalar @array と $#array+1 は等しいので、通常はうまく動く。
833:デフォルトの名無しさん
08/09/12 13:09:16
>>826
perldoc perlsub
834:デフォルトの名無しさん
08/09/12 13:09:23
>>830-831
理解できました。ありがとうございました。
>>831さんの例で言うと、添え字が[ 3 ]の要素が無いので、
なぜ開始位置の添え字の数値として指定できるのか…と混乱したのです。
835:829
08/09/12 13:14:08
>>832
詳しい説明ありがとうございました。
[$#array + 1]と同じ意味なのですね。非常によくわかりました。
836:デフォルトの名無しさん
08/09/12 14:08:22
>>826
バックスラッシュを入れないと
837:デフォルトの名無しさん
08/09/12 14:21:41
>>835
[]をつけるな。他の意味になる。
838:デフォルトの名無しさん
08/09/12 15:55:20
threads::shared でしつもん。
URLリンク(perldoc.jp)
に cond_signal の説明で、
「もしどのスレッドもその変数をcond_waitしていない場合、
シグナルは破棄される。常にシグナルの前にロックされるので、
他のスレッドがcond_wait()に入る前にシグナルを発するのを
回避することが(注意深くやれば)出来る。」
とあるのですが、この回避するための注意深いやり方ってどうすればいいのでしょう?
839:デフォルトの名無しさん
08/09/13 00:50:38
最近気が付いた。
せっかく5.10を使って勉強しても
5.10が動く無料のレンタルサーバーが無い。
だから最初から5.8で勉強しないとだめ。
でもactivePerlのバージョンはたぶん
5.10でいいとおもう。5.10の機能を
使わなければいいだけだから。
840:デフォルトの名無しさん
08/09/13 04:44:39
よく入門書とかで、「レファレンス、レファレンス」とかって
書いてあるのは、「ハード レファレンス」のことでいいの?
841:デフォルトの名無しさん
08/09/13 06:25:47
このスレで良いか分からないのですけどお願いします。
CentOS5を導入したところなのですが、cpanコマンドを最初に立ち上げたとき、
画面にBundle::CPANを導入しろとか書いてありまして、その通りに
cpan> install Bundle::CPAN
cpan> reload cpan
とやったところ、
Missing right curly or square bracket at (eval 319) line 3441, at end of line
syntax error at (eval 319) line 3441, at EOF
といったエラーが出てしまいます。OSの再インストールもしてみたのですが再現します。
この状態で他のモジュールのインストールも出来ているようなのですが、何だか不安です。
このエラーの原因についてご存知のかたはいらっしゃいますでしょうか?
CPAN.pmのバージョンは1.9205です。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4399日前に更新/239 KB
担当:undef