Perlについての質問箱 37箱目at TECH
Perlについての質問箱 37箱目 - 暇つぶし2ch723:デフォルトの名無しさん
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です。


842:デフォルトの名無しさん
08/09/13 09:50:11
なにこれ
こんなやり方知らなかったんだけど。

Perl Tutorial 76 - Formats: Low-Level Formatting - Formline
URLリンク(jp.youtube.com)

843:デフォルトの名無しさん
08/09/13 10:40:17
do do do で die die die $!

844:デフォルトの名無しさん
08/09/13 11:23:18
Anonymous FTPはなんで匿名FTPなのに、
なんでAnonymous Arrayは無名アレイなの?

845:デフォルトの名無しさん
08/09/13 11:51:34
>>844

anonymous の意味には日本語で言うところの
匿名(本当は名前を持っているけど隠してる)ってのと
無名(そもそも名前がついてない)の両方がある。

それを考えないで匿名しか使ってないやつも多いけどね


846:デフォルトの名無しさん
08/09/13 13:50:56
>>841
Linux板で質問したほうがいいと思われ

847:デフォルトの名無しさん
08/09/13 23:38:52
土曜の夜だからって
書き込みがないのは
許さんぞ!!

848:デフォルトの名無しさん
08/09/14 08:44:05
stateがいたく気に入ったのですが、
5.10が動くレンタルサーバーが無い以上、
使うのをあきらめざるをえません。
本当に断腸の思いです。

849:デフォルトの名無しさん
08/09/14 08:51:43
レンタルサーバで動かすためのもんじゃないしなぁ・・・
5.8とかにすれば?

850:デフォルトの名無しさん
08/09/14 08:54:42
my $r;

my $r=['a','b','c',];
print "@$r\n";


オレ様の初の無名アレイのサンプル。

$rに格納された、無名アレイのアドレスを、
@を先頭につけることによって、
「デ・リファレンス」することによって
配列の中味を表示している、

これであってますよね。

851:デフォルトの名無しさん
08/09/14 08:55:29
>>849
まじで?
なんで?

852:デフォルトの名無しさん
08/09/14 09:34:52
my $r=['a','b','c',];
print "$$r[1]\n";

無名配列の
デリファレンスの
配列番号指定の
表示法。

['a','b','c',]
という無名配列の先頭アドレスを
$rに格納し、$$rとアタマに$をつけることによって
デリファレンンスして配列の中味を取り出して、
[1]と添え字をつけることで指定の番号の要素を
取り出して表示している。

853:デフォルトの名無しさん
08/09/14 09:53:41
なんで有名アレイは()パーレンで囲むのに、
無名アレイは[]スクエアブラケットで囲むのか?

なんで、有名ハッシュは()パーレンで囲むのに、
無名ハッシュは{}カーリーブラケットで囲むのか?

854:デフォルトの名無しさん
08/09/14 10:06:16
my $r;
$r={
'a' => 'b',
};
print "$$r{'c'}\n";

無名ハッシュの例。
{'a' => 'b',};
の無名ハッシュのアドレスを$rに格納。
$$rと先頭に$をつけて{’c’}とキーを指定して
バリューのbを出力している。

855:デフォルトの名無しさん
08/09/14 10:07:28
ねーねーもしかして
5.9.5
のほうが5.10よりも進んでいるの?

(安定性はきにしないとして)

856:デフォルトの名無しさん
08/09/14 10:09:26
>>853
認識が根本的に間違ってる。
() <= 無名アレイもしくは無名ハッシュ(状況によっては単なるリスト)
[] <= 無名アレイへの「リファレンス」
{} <= 無名ハッシュへの「リファレンス」
@arr = ( 1,2,3 ) ; する事によって初めて有名アレイ(んな言いかたするっけ?)と言える。
あくまでも@arrが有名アレイであって、(1,2,3) は単なるリストだ。
[ 1,2,3 ] は、() を省略してる。 [ (1,2,3 ) ]
{ 1,2,3,4 } は、略

文章の流れから、[] を無名アレイと言ったりする人もいるだけの事

857:デフォルトの名無しさん
08/09/14 10:16:04
>>856
事故レス
>() <= 無名アレイもしくは無名ハッシュ(状況によっては単なるリスト)
状況によっては => 厳密には

858:デフォルトの名無しさん
08/09/14 10:34:59
ふーん
デタラメ書くと親切にしてもらえるんだな

859:デフォルトの名無しさん
08/09/14 14:02:51
なぁ、、、
もしかして、ハッシュって、フラグの管理に便利に
使えるんじゃないのか...?

ダンジョンに入った→1

とか。

860:デフォルトの名無しさん
08/09/14 14:13:24
もしかしても何も無いだろ。
ハードコーディングでもするつもりなのか?

861:デフォルトの名無しさん
08/09/14 16:02:21
>>859
なんでもいいからモジュールのコード嫁

862:デフォルトの名無しさん
08/09/14 21:42:11
バカでかいファイルのアップロード処理で
URLリンク(www.bioinfo.jp)
ここに描いてるやりかたを使いたいのですが
よくわかりません

何か簡単な例でおしえてくだしあ

863:デフォルトの名無しさん
08/09/14 22:00:32
>>862
コメント入れてもたったの10行やん。
これ以上簡単な例?

864:デフォルトの名無しさん
08/09/14 22:04:33
use HTML::TreeBuilder::XPath;

my $html = '<html><head><title>foo & bar</title></head><body></body></html>';

my $tree = HTML::TreeBuilder::XPath->new;
$tree->parse($html)->eof;
print $tree->findvalue('//title');

このコードを実行すると、
foo & bar
と表示されるんだけど、
foo & bar
って結果を返すようにできない?


865:デフォルトの名無しさん
08/09/14 22:10:09
存在を忘れそうになるけど実体参照地雷はよく働いてるな

866:デフォルトの名無しさん
08/09/14 22:13:20
LWP::UserAgentとHTTP::Requestで簡単なhttpクライアントを作っています。
$ua = LWP::UserAgent->new;
$req = HTTP::Request->new(GET => 'URLリンク(ja.wikipedia.org)');
$req->push_header('User-Agent' => 'Mozilla/4.0');
$ua->request($req);
を実行すると、パケットキャプチャの結果
GET /wiki/Perl HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: ja.wikipedia.org
User-Agent: Mozilla/4.0
という設定していない"TE"を含むリクエストを投げつけています。
この"TE"を含まないリクエストを投げたいときにはどのようにするのが簡単で自然でしょうか?
(パケットキャプチャをする都合上、圧縮はして欲しくないです)

ソースを読んだところ、LWP::Protocol::httpにてSendTE => 1という値を設定していて、
巡り巡ってNET::HTTP::Methodsでその値を参照して有効(1)ならば
push(@h2, "TE: deflate,gzip;q=0.3");
push(@connection, "TE");
をするという処理をしていました。
URLリンク(questionbox.jp.msn.com)
には
>LWP::Protocol::httpモジュールのソースファイル40行目付近を改造(SendTE => 1を0)し
とありますが、それだけはしたくないです・・・

867:864
08/09/14 22:51:46
あー、地雷踏んだ… もう1回。

use HTML::TreeBuilder::XPath;

my $html = '<html><head><title>foo &amp; bar</title></head><body></body></html>';

my $tree = HTML::TreeBuilder::XPath->new;
$tree->parse($html)->eof;
print $tree->findvalue('//title');

このコードを実行すると、
foo & bar
と表示されるんだけど、
foo &amp; bar
って結果を返すようにできない?

868:デフォルトの名無しさん
08/09/14 23:11:16
&をエスケープする...?

869:デフォルトの名無しさん
08/09/14 23:14:25
結果文字列を実体参照に変換すりゃいいんじゃね?


870:デフォルトの名無しさん
08/09/15 00:18:36
それしかないかなぁ。実態参照の種類たくさんあるから、できればやりたくないんだよなぁ。

871:デフォルトの名無しさん
08/09/15 00:31:53
そんなモジュールがCPANにあったりして。

872:デフォルトの名無しさん
08/09/15 00:40:39
わざわざ探さなくても HTML::Entities が入ってたりして。

873:デフォルトの名無しさん
08/09/15 01:01:13
>>866
push(@LWP::Protocol::http::EXTRA_SOCK_OPTS, ぽにょ => ぽにょ);

でオーバーライドできるって、宇宙からのテレパシーが言ってた

874:デフォルトの名無しさん
08/09/15 02:17:39
>>873
わーvarsってこんな風に使えるんですね!
瑠璃子ちゃん、電波、届いたよ!ありがとう!

875:デフォルトの名無しさん
08/09/15 07:58:28
>874
どう見てもバッドエンドフラグじゃねーか

876:デフォルトの名無しさん
08/09/15 09:27:05
>>873に便乗なのですが、LWP::Protocol::httpを見ると

sub _extra_sock_opts # to be overridden by subclass
{
return @EXTRA_SOCK_OPTS;
}

my $sock = $self->socket_class->new(PeerAddr => $host,
PeerPort => $port,
Proto => 'tcp',
Timeout => $timeout,
KeepAlive => !!$conn_cache,
SendTE => 1,
★$self->_extra_sock_opts($host, $port),
);

という処理になっていますが、例えば
push(@LWP::Protocol::http::EXTRA_SOCK_OPTS, SendTE => 0);
としていた場合、★のところってどのように解釈されるのでしょうか?
特に$host, $portの解釈がよくわかりませんorz

877:デフォルトの名無しさん
08/09/15 10:07:17
>>876
# LWP::Protocol::http のソースは見ずに。
== 例 ==
use Data::Dumper ;
my @arr= qw( hoge foo ) ;
my %hash = ( hoge => 1, @arr, ) ;
print Dumper \%hash ;
== 例終り ==

これと同じで、@EXTRA_SOCK_OPTS ; で設定した key, value(SendTE => 0)
にて、デフォの挙動の key, value(SendTE => 1)が上書きされる。
>★$self->_extra_sock_opts($host, $port),
がどう解釈もくそも、まんま LWP::Protocol::http の内部サブルーチン呼んでんじゃん。
# $host,$port がどうにも謎なんだが



878:876
08/09/15 10:16:13
>>877
サブルーチン呼んでいるというのは分るのですが、自分の知識だと
># $host,$port がどうにも謎なんだが
が解決しないのです

879:デフォルトの名無しさん
08/09/15 10:20:27
再定義するとき必要になる情報列挙しといたんだろ。

880:デフォルトの名無しさん
08/09/15 10:44:16
>>878
「どうにも謎」と書いたが、それは「作者の意図が分らん」って意味であって
perl の挙動としては $host,$port 完全無視である事は明白。


881:デフォルトの名無しさん
08/09/15 11:56:08
おしえてくだしあ

wc -l ファイル名

でファイルの行数を取得したくて
$count = system("wc -l ファイル名");

みたいにしてるのですが、0が入ります
コマンドで取得した行数を変数にぶち込むのはどういうやり方でやるんですか

882:デフォルトの名無しさん
08/09/15 12:19:45
open使え

883:デフォルトの名無しさん
08/09/15 12:24:11
>>880
# to be overridden by subclass
これが作者の意図だろ。
サブクラスで使うかもしれない情報を渡しているだけ。

884:デフォルトの名無しさん
08/09/15 12:25:01
>>881
systemのマニュアルエントリに書いてあるお

885:デフォルトの名無しさん
08/09/16 00:28:39
>>881
`wc -l ファイル名`

886:デフォルトの名無しさん
08/09/16 03:58:16
my $ref_array = [10, 20, 30];

print "@$ref_array[1]\n";   ←1
print "$ref_array->[1]\n";  ←2

1と2で、どっち使うの?

887:デフォルトの名無しさん
08/09/16 05:19:04
my $a = "a";

print "$main::a";

これで何も表示されないのですが、
この時のmy $aは何パッケージに
なっているのでしょうか?

888:デフォルトの名無しさん
08/09/16 06:13:33
古い処理 → シンボリック レファレンス
新しい処理 → ハード レファレンス

古いやり方 → &をつけたサブルーチン呼び出し
新しいやり方 → ()をつけたサブルーチン呼び出し

古いやり方 → パッケージ
新しいやり方 → モジュール


、、、まだある?

889:デフォルトの名無しさん
08/09/16 06:44:35
$v="aaa";
$r="v";
print "$r\n";
print "$$r\n";

これが シンボリック レファレンス か。

キモイな。

890:デフォルトの名無しさん
08/09/16 07:09:33
アロー演算子は
デリファレンスの時と
オブジェクト指向のときと、
二つの場合で使われるの?

891:デフォルトの名無しさん
08/09/16 08:13:10
モニタのインチ数を指定すると、画面の縦横サイズを
出力するスクリプトを書きたいのですが、どうしたらいいでしょうか?

my $in = 19; # 指定されたモニタのインチ数
my $rt = 2.54; # 一インチは2.54センチメートル
my $a; # これを求めたい
my $x = 4; # 横の比率
my $y = 3; # 縦の比率

# 三平方の定理
# $in**2 = (($x*$a)**2)+(($y*$a)**2)
# $in = ((($x*$a)**2)+(($y*$a)**2))**(1/2)

892:デフォルトの名無しさん
08/09/16 08:15:49
>>891の続き

$in から $a の値を導き出すことが出来たら、
縦横サイズをセンチメートルで出力するのは簡単なのですが、
式の整理が上手くいかず躓いています。

もし宜しければご教授お願いいたします。

893:デフォルトの名無しさん
08/09/16 08:22:57
>>892の続き

自己解決することが出来ました。
4:3モニタの場合は、インチ数である対角線の比率が5、
16:9モニタの場合は、18.36になるようです。

894:デフォルトの名無しさん
08/09/16 08:54:26
多次元配列とか使わないでも
MySQLとかで解決したほうが速いよね?

895:デフォルトの名無しさん
08/09/16 09:43:18
URLリンク(kabocha.org)

このページわかりやすいね。

896:デフォルトの名無しさん
08/09/16 10:09:05
regex::ってなに?
正規表現をかんたんにするためのモジュール?

897:デフォルトの名無しさん
08/09/16 10:29:14
Perl Tutorial 93 - Arrays of Arrays
URLリンク(jp.youtube.com)

これちょっとごちゃごちゃしてて
よくわからんなー

898:デフォルトの名無しさん
08/09/16 11:14:56
つか、perlで$aと$bは普通の変数として使うな。

899:デフォルトの名無しさん
08/09/16 12:24:20
>>887
myで宣言された変数はレキシカル変数といい、パッケージ変数とは別物。
レキシカル変数は、パッケージに属するのではなく、レキシカルスコープに属する。

900:デフォルトの名無しさん
08/09/16 15:25:09
>>899
でもメインパッケージの中に属しているわけだから
$main::aで表示できるはず、、、、
ってなにか変なこと言ってます?

901:デフォルトの名無しさん
08/09/16 15:25:58
もしかしてこないだやってた議論と
本質的に同じ?

902:デフォルトの名無しさん
08/09/16 15:35:53
タダの自演

903:デフォルトの名無しさん
08/09/16 15:48:35
>>900
$main::aとすると、mainに属するパッケージ変数を参照することになります。
my $a は、レキシカル変数であり、パッケージ変数ではないです。

パッケージ変数を作りたければ、
our $a;
と、宣言しましょう。

904:デフォルトの名無しさん
08/09/16 15:59:20
ふーん
デタラメ書くと親切にしてもらえるんだな


905:デフォルトの名無しさん
08/09/16 18:09:55
sortでハマるんですね。わかります。

906:デフォルトの名無しさん
08/09/16 18:26:56
独り言書かなきゃ死ぬ人と教えなきゃ死ぬ人で需給が成り立ってるから
sort でハマっても解決される仕組みになってるはず。

いろいろループしてますよね。>>541>>562-563

907:デフォルトの名無しさん
08/09/16 18:50:20
教えなきゃ死ぬ人はあまりにも少なく、あまりにも短命。

908:デフォルトの名無しさん
08/09/16 20:17:56
「初心者がPerlを頑張るblog」みたいなのを開設したら
結構な面白いサイトになりそうなのが惜しまれる

909:デフォルトの名無しさん
08/09/16 20:48:04
こいつはだめだろ。全然成長していない。

リア厨かと思ってたけど、昼間も書き込んでるんだな。

910:デフォルトの名無しさん
08/09/16 22:31:08
その話題も既出

911:デフォルトの名無しさん
08/09/17 00:13:58
ファイルの一番外側に見えない { } があると思うと良いんじゃないかな。
{
 my $a = "a";
}


912:デフォルトの名無しさん
08/09/17 02:42:47
じゃあどこの会社のブログで
開設したらいいか調べてよ

アクセス解析ないとやだけど。
できればアパッチの生ログに近い感じで
見れるとこ。勝手に統計的にまとめて表示
するのはだめ。

それとアホがきたときにはきちんと
アク禁できること。

これが条件。perlお得意のムーバブルタイプで
対応できる?

913:デフォルトの名無しさん
08/09/17 07:42:44
URLリンク(kabocha.org)

クロージャーの説明読んだが、さっぱりわけが
わからんな。

もしかして、最新言語だったら、
オブジェクト指向でやるようなことなのか?

914:デフォルトの名無しさん
08/09/17 08:30:44
>912
何時何分何秒、地球が何回まわったときなのか答えろよ!
って反論する小学生を思い出した

915:デフォルトの名無しさん
08/09/17 11:04:08
(1)
型グロブと、グロブって違うものだよね?

(2)
グロブって普通に使うものなの?

916:デフォルトの名無しさん
08/09/17 11:45:52
perlの予約語一覧ってどこにあるの?
getkeyが予約語かどうか、知りたいんだが。

917:デフォルトの名無しさん
08/09/17 11:55:11
ぐぐったらわかった。
予約語じゃないってさ。

なんか、perlのマニュアルに載ってるらしい。
mapの使用例として。

918:デフォルトの名無しさん
08/09/17 13:19:23
スペースキーを押したら
メッセージを出す、ってできないの?

919:デフォルトの名無しさん
08/09/17 13:35:25
今、レファレンスの勉強をしているんだが、

$a=1;

こうした時に、$aには何が
入っているのか?
1がはいっているのか、あるいは
1のアドレスが入っているのか。
あるいは、1のアドレスを指し示した物が
入っているのか。

920:デフォルトの名無しさん
08/09/17 13:41:16
1だろ。

あと$a,$bはsortが使うので以下略

921:デフォルトの名無しさん
08/09/17 13:43:50
>>920
だってレファレンスの解説サイト見たら
「違う」って書いてあったもん

922:デフォルトの名無しさん
08/09/17 13:46:42
$a = \1;

923:デフォルトの名無しさん
08/09/17 13:50:37
y///



↑なにこれ。
入門書にのってないんだけど。

924:デフォルトの名無しさん
08/09/17 14:13:09
レファレンスなの?
リファレンスなの?

925:デフォルトの名無しさん
08/09/17 15:58:22
バファレンス

926:デフォルトの名無しさん
08/09/17 16:57:33
>>923
>sed の信仰者のために y が tr の同義語として提供されています。

だそうです。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch