08/08/31 17:46:06
>>446
ありがちっちゃありがちだけどもな、
Perl の文法をいい加減に覚えていると、そういう疑問を持ってしまう。
perl は文の区切りとして ; を要求するのであって、
文の終端として、ではないのだ。
ブロック内の最後の行で ; を省略できるのも、
ブロック生成子としての {} が文を区切ってしまうためなのだ。
基礎からやり直しつつ1年ほどROMれ。
449:デフォルトの名無しさん
08/08/31 18:57:27
>442
一番最後の行で答えが出てるじゃないか。
>444
まさにPerlの美学であると同時にデメリットだよなあ。
自分なら適当に区切るか括弧をつける。
>448
でもまあ、付けるけどな、俺。
450:448
08/08/31 19:33:07
>>449
>>444 にあるコードは読み手を混乱させるのが目的なので、あえてそのように書いているのはお分かりかと思います。従って可読性を上げては意味がありません。
ただ今回のコードはまったくややこしくない、いわば子供だましの類なので、読めないとちょっとアレなのは確かですが。
>>448
もちろんそれがよいでしょう。理由は…、言うまでもありませんな。
451:デフォルトの名無しさん
08/08/31 19:51:31
>>444
ppencode の出力の一部じゃないのか? ppencode が何者かはぐぐればわかる。
452:デフォルトの名無しさん
08/08/31 20:28:16
print q pop
これでoって出るのがすげーわらえる
453:デフォルトの名無しさん
08/08/31 20:53:40
はいはいわろすわろす
454:デフォルトの名無しさん
08/08/31 21:45:17
>>444って要するに、"q"の意味がわかれば簡単だよね?
455:デフォルトの名無しさん
08/08/31 21:47:55
>>444
それぞれ一つ一つの意味は分かっても、こうやって並ばれると分からないです><
456:デフォルトの名無しさん
08/08/31 21:54:00
残念ながらそれは、知らないと ハァ? なレベルの知識だ。
457:デフォルトの名無しさん
08/08/31 22:08:19
ハァ?
458:デフォルトの名無しさん
08/08/31 23:02:46
今日からPerlを始めたいと思ってます。
Active Perlというものは今でも無料で入手できるのでしょうか。。。
Windowsで使いたいのです。
459:デフォルトの名無しさん
08/08/31 23:11:26
なぜ実際に自分で試そうとしない?
460:デフォルトの名無しさん
08/08/31 23:11:48
>>458
ActivePerl そのものは現在も無料です。楽しんでね。
461:デフォルトの名無しさん
08/08/31 23:40:46
なるほど、ここで生成されたものか
ppencode - JavaScript demo
URLリンク(namazu.org)
462:デフォルトの名無しさん
08/09/01 00:49:55
>>458
ActivePerlは無料です。
でもダウンロードのリンクは
IQ150以上でないと
探せないようになっております。
463:デフォルトの名無しさん
08/09/01 00:51:06
ちなみに最新バージョンは
5.10です。
ごーてんいち、でなくて
ごーてんじゅう、です。
464:デフォルトの名無しさん
08/09/01 00:51:58
ダウンロードしてきたファイルは、
msiファイルを右クリで、インストールを
選べばインストールできます。
ダブクリではインストできないこともあります。
465:デフォルトの名無しさん
08/09/01 00:52:45
ちなみに、VISUALPerlというものは
開発中止になった模様です。
466:デフォルトの名無しさん
08/09/01 01:59:27
レンタルサーバのLWPでhttpsなサイトにアクセスしようとしたら、
Protocol scheme 'https' is not supported (Crypt::SSLeay not installed)
と怒られました。
telnetやsshでログインできないサーバなのですが、httpsなサイトにアクセスできるように出来ないでしょうか?
467:デフォルトの名無しさん
08/09/01 02:03:33
できません
468:デフォルトの名無しさん
08/09/01 02:50:24
鯖缶にモヅル入れろと頼めば突っ込んでくれるとこもある
469:デフォルトの名無しさん
08/09/01 02:52:58
use Term::ANSIColor qw(:constants);
my @colors = qw(RED GREEN BLUE);
for (@colors) {
print $_, "$_", "\n";
}
みたいな事をやって、ループ内の動きが以下と等価になるようにしたいです。
print RED, 'RED', "\n";
print GREEN, 'GREEN', "\n";
print BLUE, 'BLUE', "\n";
現状はループ内の print の第一引数に文字列がそのままわたっているだけなので、
希望通りの動作をしませんが、希望通りに動かすにはどうしたら良いのでしょうか?
よろしくお願いします。
470:デフォルトの名無しさん
08/09/01 03:18:17
>>469
print eval($_), $_, "\n" for @{$Term::ANSIColor::EXPORT_TAGS{constants}};
471:デフォルトの名無しさん
08/09/01 03:23:24
>>470
なるほど、evalで文字列を評価してやれば良い訳ですね。
リファレンス当たりをごにょごにょするのかなーと漠然と思っていたのですが、
そういう考え方には至りませんでした。
ありがとうございます。
472:470
08/09/01 03:29:30
>>471
eval も一法というだけ。
@colors への代入時に解決してやる手もある。
というかそちらのほうが素直。
my @colors = RED, GREEN, BLUE;
473:デフォルトの名無しさん
08/09/01 03:41:11
>>472
はじめはそのような方法を考えてみたのですが、
代入時に評価してしまった場合、その後どうやって文字列として取得するかがわからず、
先ほどのようなコードになりました。
もしよろしければ、文字列として取得する方法も教えて頂けますか?
474:デフォルトの名無しさん
08/09/01 03:56:10
my @colors = qw(RED GREEN BLUE);
for (@colors) {
print $Term::ANSIColor::{$_}->($_), "\n";
}
475:デフォルトの名無しさん
08/09/01 04:00:33
my @colors = qw(RED GREEN BLUE);
for (@colors) {
no strict 'refs';
print $_->(), $_, "\n";
}
476:458
08/09/01 08:33:05
>>460 >>462
先ほど無事インストールし、[Hello World!!]を表示できました。
いろいろありがとうございました。。。 (´・ω・`)
477:466
08/09/01 10:50:02
>>467,468
サーバの管理者へインストールをお願いしてみます。
478:デフォルトの名無しさん
08/09/01 20:26:36
「1.pl」の内容
use feature qw( :5.10 );
sub a {
my $a=1;
return $a;
}
1;
------------------
「2.plの内容」
use feature qw( :5.10 );
require q|1.pl|;
say &a;
----------------------
これで、「2.pl」を実行すると、「1」と表示されるが、
本当にこれでいいのか?
つまり、1.plの変数の内容を、2.plで、requireで呼び出して使うとき、
サブルーチン渡しでいいのか?
それとも、モジュール渡しをするのが普通なのか?
our渡しは、できるけれども、教科書に「やるな」と書いてあるので
排除の方向で。
それとも、ほかの何かがあるのか?
479:デフォルトの名無しさん
08/09/01 20:27:24
1.plで変数があって、
それを
requireで、
2.plからその変数を利用したいときに、
どうやって変数を渡すのか、という
問題です。
480:デフォルトの名無しさん
08/09/01 20:38:24
q| | って書く頭わるいの前からいるけど同一人物だよな。
夏休みいつまでなの?
481:デフォルトの名無しさん
08/09/01 20:43:36
毎日がエブリデイなんじゃないかな。
482:デフォルトの名無しさん
08/09/01 21:56:53
>>476
おめでとさん。Perl の泥沼へようこそ。
泥んこ遊びは楽しいYO!
483:デフォルトの名無しさん
08/09/01 22:22:05
もうPerlなんてみたくもさわりたくもないと思いながら、早2年。
毎日のように#!/usr/bin/perl -wと書いています。
484:デフォルトの名無しさん
08/09/01 23:41:22
>>483
> 毎日のように#!/usr/bin/perl -wと書いています。
これを自分で書く奴は相当のバカ
485:デフォルトの名無しさん
08/09/02 00:32:56
晒しage
486:デフォルトの名無しさん
08/09/02 00:42:38
URLリンク(drop.io)
URLリンク(jbbs.livedoor.jp)
これおかしなプログラムとか組み込まれてませんか?
487:デフォルトの名無しさん
08/09/02 00:45:18
板違いです
488:デフォルトの名無しさん
08/09/02 01:21:12
ファイルをまたいだ引数の渡し方について
マジでおしえてくんないかなー?
requireでなくてuseを使うの?
489:デフォルトの名無しさん
08/09/02 01:44:08
うるせーよだまってろ
490:デフォルトの名無しさん
08/09/02 02:07:54
ここはひどいインターネッツですね
491:デフォルトの名無しさん
08/09/02 02:34:26
URLリンク(drop.io)
URLリンク(jbbs.livedoor.jp)
これおかしなPerlとか組み込まれてませんか?
Perlで組まれてるらしいでつ
492:デフォルトの名無しさん
08/09/02 02:37:29
板違いです
493:デフォルトの名無しさん
08/09/02 03:45:53
なんだ・・・解析できないのか・・・はぁ・・・
494:デフォルトの名無しさん
08/09/02 04:13:48
もしかして、パッケージを一致させればいいのか?
495:デフォルトの名無しさん
08/09/02 04:18:31
もしかして、モジュールとパッケージとrequireについて
調べればいいのか?
それで、読むべき教科書は
URLリンク(www.rfs.jp)
ここであってる?
496:デフォルトの名無しさん
08/09/02 05:21:19
>495
結論が出てるのに何が疑問なのかが分からない。
それと多分、誠意が足りてない。
497:デフォルトの名無しさん
08/09/02 08:07:27
>>496 を読んだ >>494
「なんだよ、あってるならあってるってとっとと言えばいいのに」
「誠意とか意味わかんないし関係ないじゃん」
「まあいいや。誰かも煽りはスルーって言ってたし。バカには言わせとけばいいんだ」
498:デフォルトの名無しさん
08/09/02 11:41:23
質問です。
my @aaa = ("A" , "B" , "C" , "D");
foreach(@aaa){
@aaaの中を一つ飛ばす。
printf("%s\n",$_);
}
とし、結果を
B
D
としたいのですが、どのようにしたら簡単に出来ますでしょうか。
for()で$iを途中インクリする方法を考えたけど、いまいち複雑になったので。
499:デフォルトの名無しさん
08/09/02 11:58:28
next;
500:デフォルトの名無しさん
08/09/02 12:05:45
splice
501:デフォルトの名無しさん
08/09/02 12:06:44
my @aaa = qw(A B C D);
for my $i (0 .. $#aaa) {
next if $i % 2 == 0;
print $aaa[$i], "\n";
}
502:デフォルトの名無しさん
08/09/02 12:10:17
ヒアドキュメント内でループ処理したいのですが
コンボボックスをループで動的に生成したいのです。
どうやってやればいいのですか
503:デフォルトの名無しさん
08/09/02 12:21:31
>>502
@{[ 任意の式 ]} を埋め込めばいいだろ。式としてdo BLOCKをつかえばおよそ何でも書ける。
Template Toolkitとか使った方が幸せになれそうだけどな。
504:デフォルトの名無しさん
08/09/02 12:29:08
mapでおk
505:デフォルトの名無しさん
08/09/02 14:53:09
リャマ本の133ページ(手元にあるのは11版です)の「8.5.1 優先順位の例」にある
このパターンは、文字列先頭にあるfredにマッチするか、あるいは末尾にあるbarにマッチします
の部分ですけれど、これって
このパターンは、文字列先頭にあるfredにマッチするか、あるいは末尾にあるbarneyにマッチします
の誤りじゃないんですか?オライリーのエラッタには載ってないみたいなんですが。
506:デフォルトの名無しさん
08/09/02 14:54:56
途中で送信してしまった…
/^fred|barney$/ だとそうなるような気がするんスが。
507:498
08/09/02 14:54:57
>>499-501
サンクス。
確認できますた。
508:デフォルトの名無しさん
08/09/02 15:03:51
>>505
最初/^foo|bar$/ってなってたのを書き直したんだろうなw
509:デフォルトの名無しさん
08/09/02 16:05:42
>508
なんだか急に親近感がwww
510:デフォルトの名無しさん
08/09/02 17:04:03
そして11版まで行って誰も指摘してないのかよこれww
511:デフォルトの名無しさん
08/09/02 17:32:56
指摘しちゃだめだろjk
512:デフォルトの名無しさん
08/09/02 18:13:41
Perlを勉強する分には、Win上でActive Perlを使うのでも支障は無いでしょうか?
UNIX上とはかなり差があるような気がして…
513:デフォルトの名無しさん
08/09/02 18:17:08
Perl自体にWindowsもUNIXも組み込みも関係ない
514:デフォルトの名無しさん
08/09/02 20:11:06
>>512
コマンドプロンプトの操作性やパスの設定、文字コードを考えると、
Unix系のOSでperl使った方がましだと思う。
Cygwinでもいいんだけどさ。
515:デフォルトの名無しさん
08/09/02 20:33:34
>>512
perlを1ヶ月学んできづいたことは、
CPANからモジュールとってくる、ってときに、
WinのActivePerlだと、PPMっていうソフトで
新しいモジュールをインストールするんだけど、
そこのPPMのメニューにすでに登録されている
モジュールしかインストールできない。
厳密に言えば6段階くらい複雑な手順をふめば
PPMを使わないで手動でインストールできるらしいんだが
初心者にはおすすめできない。
つまり、CPANから○○をダウンロードして使え、だとか
言われたりしたときとか、あるいは自分でグーグルで検索して
よさそうなモジュールみつけたときでも、それをかんたんには
入れられないケースが発生することがある。
自分がはまってるのは、mp3を鳴らすなんとか、ってモジュールを
入れたいんだが、PPMにのってないので困っている。
516:デフォルトの名無しさん
08/09/02 20:35:12
2番目は、文字コードの問題。
DOSプロンプトで勉強するときに、必ず
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
と書かないといけない。
517:デフォルトの名無しさん
08/09/02 21:08:44
>>512
coLinux+debian sidオススメ。
無駄にハイクオリティーなことをすると楽しい。
518:デフォルトの名無しさん
08/09/02 21:46:20
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1.の行を入れると、DOS窓への日本語出力は簡便になりますが、
# ソースファイル名に非ANSI文字が含まれる場合にdie 文の出力が失敗します。
# ※2.OSに渡す文字列(ファイル名,dosコマンドのオプションなど)は、
# この例のようにcp932でエンコードする必要があります。
-----------------------------------------------------
↑これの説明がよくわからないんだが、ファイル名が日本語の場合、
上記の措置が必要という意味なの?
それとも、ファイル名がアルファベットでも、
そのファイルの中味に日本語が書いてあったら、
上記の措置が必要という意味なの?
で、あれば、ファイル名が英語で、なおかつ
ファイルの中味が全部英語なら、上記の措置は
必要ないってことなの?
519:デフォルトの名無しさん
08/09/02 21:55:57
どっちが主流ですか?
1. $obj = new X;
2. $obj = X->new;
1. call_sub();
2. &call_sub;
520:デフォルトの名無しさん
08/09/02 22:02:39
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
-------------------------
↑これってmy $fhって、なんなの?
ファイルハンドルなの?
521:デフォルトの名無しさん
08/09/02 22:09:10
open(IN, "1.txt");
while (<IN>) { print; }
close(IN);
-------------------
別に、>>4に書いてあるようにcp932ってしなくても、
上記で日本語を含むファイルを開けるのですが、
これでいいの?
522:デフォルトの名無しさん
08/09/02 23:30:15
>>515
こんなんもあるYO
Strawberry Perl
URLリンク(www.moongift.jp)
523:デフォルトの名無しさん
08/09/02 23:37:16
別ファイルに変数を渡す問題だが、
サブルーチン渡しにしたら問題が解決したと書いたが、
参考書で調べたところ、
「サブルーチンは宣言すると、すべて自動的にグローバルになる」
と書いてある。
つまり、ourでグローバル渡しをしているのと
実質的にまったく同じことなので、意味がないのだ。
ここはやはり、モジュールとかパッケージの勉強を
するべきなのか?
本当はどうやって渡すの?
524:デフォルトの名無しさん
08/09/03 01:37:40
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
525:デフォルトの名無しさん
08/09/03 01:38:28
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
526:デフォルトの名無しさん
08/09/03 01:39:15
>>524をファイルの先頭に書けば、
>>525は必要ないの?
実際、>>524だけで、
>>525なしでも、動いたんだけど。
527:デフォルトの名無しさん
08/09/03 01:46:07
何もせずにそのままコピーするだけならエンコーディング無視のバイト列で
扱ってもいいけど、普通は中身みて加工とか集計とかするわけで、そういう
ときに違いが出るんだな。
528:デフォルトの名無しさん
08/09/03 02:10:24
$fhってのはファイルハンドルなの?
普通は出てくるはずの
<IN>とかの文字が見えないので不安なんですけど。
529:デフォルトの名無しさん
08/09/03 02:13:03
他ファイルのmy化された変数を別ファイルで読み込んで
使うのって、結局ourでグローバル変数化しておくか、あるいは
サブルーチンに入れて、return渡しするしかないの?
サブルーチンにいれるのは、すべてのサブルーチンは
宣言すると自動的にグローバル化されるのだから、
他ファイルに渡せるのはあたりまえなんですよね。
結局ourでグローバル化してるのと本質的には同じだし。
パッケージとモジュールの勉強をしてみましたが、
それでも結局グローバル化されてる変数は読み込めましたが、
my化されてる変数は読み込めませんでした。
530:デフォルトの名無しさん
08/09/03 02:46:49
自分で何回もためしてみたけど、やっぱりモジュールファイルの中で
my化してるとだめなんだ~
他ファイルで使って欲しい変数はグローバル化してないと
だめなんだね。
531:デフォルトの名無しさん
08/09/03 02:48:43
>529
相変わらず質問の意図が分かりかねるのだが、それはさておき。
>他ファイルのmy化された変数を別ファイルで読み込んで
>使うのって、結局ourでグローバル変数化しておくか、あるいは
>サブルーチンに入れて、return渡しするしかないの?
やり方が分かってるなら、そうすればいい。
>それでも結局グローバル化されてる変数は読み込めましたが、
>my化されてる変数は読み込めませんでした。
myで宣言されてる変数が他から読めたら、myの意味が無いっしょ。
例えばグローバル変数にはメリットとデメリットがある。
特に理由が無ければデメリットの少ないローカルな変数を使って、サブルーチン間を渡せばいい。
ただし、メリットとデメリットを理解している人間が、的確な場所に使う分には何も問題がない。
グローバル変数を使うのも使わないのも、両方とも正解だ。
その「的確な場所」が分からないのなら、まだ使うべきではないということだ。
532:デフォルトの名無しさん
08/09/03 02:50:26
Wikipediaの「名前空間」の項目が、少しは疑問を解決してくれるかも。
URLリンク(ja.wikipedia.org)
533:デフォルトの名無しさん
08/09/03 02:56:37
だーかーらー。
たとえば、モンスターの設定ファイルで、
スライムの体力=1とかって設定するとするでしょ。
ファイル名「a.pm」
package 1;
my $a=1;
1;
---------------
このmy $aを
他のファイルから読みたかったの。
でも無理だとわかったの。
この理解であってる?
534:デフォルトの名無しさん
08/09/03 03:03:42
>>533
いい加減しつこい。とりあえず以下のドキュメント読んどけ。読み終わるまで戻ってくんな。
> perlboot - Perl OO tutorial for beginners
> perltoot - Perl OO tutorial, part 1
> perltooc - Perl OO tutorial, part 2
> perlbot - Perl OO tricks and examples
535:533
08/09/03 03:05:01
読み終わりましたー
536:デフォルトの名無しさん
08/09/03 03:08:03
だってグローバル変数絶対使うなみたいなことよく
書いてあるじゃん。
だから絶対使ったらダメなのかと思ったし。
でも外部から読み込まれることを前提に設計されてる
モジュールの場合は、外部に渡す変数はグローバル宣言なのね。
最初からそう言ってくれればいいのに。
入門書にも書いてないしー
537:デフォルトの名無しさん
08/09/03 03:50:29
>>536
・Perlについてくるマニュアルに書いてある
・標準モジュールやユーティリティのソースで実例が見られる
・Webを検索すれば割とすぐに見つかる
・それについて書いてある本がいくつもある
そういうアレな質問に回答を返す病的に親切な人が出てきても、
「聞きたいのはそれじゃない」だったり、完全スルーだったり。
回答者が寄り付かないように工夫しているとしか思えないです。
あなたの好みと水準にぴったり合わせた答えを提供する義務は
誰にもありません。その点は忘れないで下さい。
538:デフォルトの名無しさん
08/09/03 03:51:14
>>533
だーかーらーそれが勇者の設定ファイルなら読めるわ
539:デフォルトの名無しさん
08/09/03 03:59:50
病的に親切な人と、叩こうとする=構おうとする人がなぁ。
540:デフォルトの名無しさん
08/09/03 04:00:02
>533
それであってると言う主旨の回答を3回くらい見かけてるわけだが
541:デフォルトの名無しさん
08/09/03 11:02:26
下でエラーが出るのは何故ですか?
--a.pl----------------
our $a = "hoge";
---------------------
--b.pl----------------
use strict;
require "a.pl";
print $a;
---------------------
C:\>perl b.pl
hoge
_____________________________________________________________________________
--a.pl----------------
our $aa = "hoge";
---------------------
--b.pl----------------
use strict;
require "a.pl";
print $aa;
---------------------
C:\>perl b.pl
Global symbol "$aa" requires explicit package name at b.pl line 3.
Execution of b.pl aborted due to compilation errors.
542:デフォルトの名無しさん
08/09/03 11:02:59
perl -wで動かすと、
Use of implicit split to @_ is deprecated
というものが表示されるのですが、これはどういう意味でしょうか?
-wをつけなければ表示されません
543:デフォルトの名無しさん
08/09/03 11:14:13
>>542
splitをスカラーコンテキストで使うとばらした内容を@_に入れるという
仕様なんだが、サブルーチンの引数渡しに使われる@_を壊すので
よろしくないということになっている。
perldiag(1)の説明によればコンパイラに負担がかかるらしい。
Use of implicit split to @_ is deprecated
(D deprecated) It makes a lot of work for the compiler when you
clobber a subroutine's argument list, so it's better if you assign
the results of a split() explicitly to an array (or list).
古いプログラムはしょうがないが新しく書くプログラムでは避けた
方がいいと思われ。
544:542
08/09/03 13:01:45
ありがとうございます
my $tab = split( /\t/, $_);
こう書いているのですが、どのように修正すればいいのでしょうか?
545:デフォルトの名無しさん
08/09/03 13:07:07
>>544
$_ には何が入っていて、$tab には何を入れたいの?
もしかして @tab と書くべきところだったってオチか?
546:デフォルトの名無しさん
08/09/03 13:33:32
ダミーの変数を用意して:
my $tab = my @dummy = split( /\t/, $_ );
が楽だし確実だな。
でも実はタブを数えたかったのなら、タブによって分割された
項目数を数えるより直接タブを数える
my $tab2 = tr/\t//;
の方が効率的なのでおぼえておくといい。
ただしsplitは(第3引数に負の数を与えなければ)末尾の空フィールドは
捨てるので、この動作を利用してなんかしている場合はtrで数える手は
使えない。
547:542
08/09/03 14:07:31
>>545
ありがとうございます。
$_には、
foo\tbar\tbaz
や
\t
のような値が入っています。
$tabには配列の数を入れたかったです。(1行目なら32行目なら0
>>546
ありがとうざいます。
頂いたとおりに修正することで、-wをつけても何も表示されなくなりました。
548:デフォルトの名無しさん
08/09/03 14:58:36
Perlを始めてみたのですが、
UNIXだとファイルの最初に[ #! /usr/local/bin/perl ]などとフルパスを書くと
コマンドだけで実行できるようですが、Active PerlをWindowsで使ってる場合は、
こういうやり方は無理なのでしょうか?
今は、ファイルを保存したディレクトリ内で、[ perl <ファイル名.pl> ]を打ち込んで実行しています。
549:デフォルトの名無しさん
08/09/03 15:54:33
>>548
ちゃんとインストーラでインストールした?
解凍してコピーしただけじゃOSの設定はされないよ。
ちゃんとインストールすれば、ほげ.pl をマウスでクリックするだけで動いてくれるよ。
#! /usr/local/bin/perl
が必要なのは、UNIXというOS固有の問題だから Windows には関係ない。
# で始まってるのでタダのコメント文として無視される。
550:デフォルトの名無しさん
08/09/03 15:56:48
ActivePerlなら、インストール時に(デフォルト設定でインストしてれば)*.plの拡張子に関連付けられてるハズだから、
.plの拡張子を持つファイルなら、コマンドプロンプトから、C:\> ~~.plでも実行できる。
(頭の#!~~はまず気にしなくてよし。#!/usr/bin/speedy とか書いてる時はエラー出るけど・・)
つうか、拡張子が関連付けられてたら、エクスプローラーからダブルクリックでも実行できる。
けど、前にもココだったか、Webprog板の方だったかにいたけど、
「コマンドプロンプトが一瞬で消えてしまい、出力が読めません。」とか言わないでね。
551:デフォルトの名無しさん
08/09/03 16:20:47
自分は「Perlをはじめよう」ってソフトを使ってる。
便利。
552:デフォルトの名無しさん
08/09/03 16:22:38
sleep 100;
553:デフォルトの名無しさん
08/09/03 16:26:34
質問。
>>525との組み合わせなのですが、
教科書や解説ページを見ると、よく
open FH, ">filename.txt";
---------------
$FH = "filename.txt";
open FH;
------------------
open(FH,"<data.dat"); # 入力モードでオープン
--------------------
$line = <FH>; # 1行読み込み
----------------------
open(FH, $datafile);
@list = <FH>;
-------------------
foreach $data_line( @list ) {
print $data_line;
}
---------------
open(IN, $datafile);
while ( $line = <IN >) {
print $line;
}
--------------
↑このような例がでてくるのですが、いずれもファイルハンドルとして
INとかFHとか大文字がでてくるのですが、>>525だと
そのような文字が見当たりません。
できれば我々初心者が見慣れた例で書き直した
サンプルをいただきたいのですが。
554:デフォルトの名無しさん
08/09/03 16:43:21
そういう古いのは使っちゃだめ。覚え直せ
open my $fh, ">", "filename.txt";
------------------
open my $fh, "<", "data.dat";
--------------------
$line = <$fh>;
----------------------
open my $fh, "<", $datafile;
my @list = <$fh>;
-------------------
foreach my $data_line (@list) {
print $data_line;
}
---------------
opem my $in, "<", $datafile;
while (my $line = <$in>) {
print $line;
}
555:デフォルトの名無しさん
08/09/03 16:59:55
>>549-550
ありがとうございました。
拡張子つけないでファイル名だけでできるかなと思ったわけです。
>>551
それインストールしてみました。イイ情報をありがとうございました。
556:デフォルトの名無しさん
08/09/03 17:05:56
>>553
君の大嫌いなグローバルな変数(ファイルハンドル)を使っていいのかい?
557:デフォルトの名無しさん
08/09/03 19:44:37
>>554,556
まじで?
また古い本を読んでしまったのかな、、、
558:デフォルトの名無しさん
08/09/03 19:45:30
つまりファイルハンドルも実は変数の一つにすぎないと?
それで、プライベートなファイルハンドルと、
グローバルなファイルハンドルが存在すると??
559:デフォルトの名無しさん
08/09/03 19:59:17
<IN>の実体は型グロブ*IN
560:デフォルトの名無しさん
08/09/03 20:31:44
URLリンク(ja.wikibooks.org)変数、データ構造
561:デフォルトの名無しさん
08/09/03 20:54:24
>556
たぶん別人。もしくは壮大な釣り
562:デフォルトの名無しさん
08/09/03 22:42:54
>>541
> 下でエラーが出るのは何故ですか?
perldoc strict
の "strict vars" の項を読んでみてください。
# そして、上の例でなぜエラーが出ないかについては:
# perldoc -f sort
563:デフォルトの名無しさん
08/09/03 23:04:43
>>562
サンクス
パッケージ名を明記しなくちゃいけないんですね。
でも、$aと$bは、自動的にパッケージ名をつけてくれると。
564:デフォルトの名無しさん
08/09/04 01:10:57
ファイルハンドルを変数に格納するやり方は
「間接ファイルハンドル」
という名前がついていることはつきとめました。
マッキンゼーに2,000万払って調べてもらいました。
で、古いやり方はやめて
間接ファイルハンドルを使え、と
書いてあるWEBページはどこにあるのでしょうか?
565:デフォルトの名無しさん
08/09/04 01:48:34
>564
ここのスレだってウェブサイトの1つってことでいいよね?
566:デフォルトの名無しさん
08/09/04 02:01:01
スレがやけに加速してると思ったらほとんど同一人物ぽいな。
低レベルなレスでスレ汚すなよ。中学生だろ、おまえ。
ま、おれもヒトのこと以遠が。。。でも俺よりは年下だな。
ひとつだけ教えといてやろう。
パッケージ変数はサブルーチンでアクセスしろって、PBPに書いてあった。
Class::Data::Inheritableとか使ってもいいだろう。
だから、もうこの関連で書き込みすんなよ。
567:デフォルトの名無しさん
08/09/04 02:02:32
あ、ちなみに俺、中学生じゃないです。その上だから。
568:デフォルトの名無しさん
08/09/04 02:04:39
>>565
いまボストンコンサルティングに1、500万払って
調べてももらってますが、
「古いファイルハンドルの指定の仕方(FILEとか)でなくて、
新しいやり方、間接ファイルハンドルを使え」
と明確に書いてあるWEBページは、
なかなか見つかんないですよ。
たぶんメリットがないんじゃないですか?
569:デフォルトの名無しさん
08/09/04 02:06:19
>>566-567
高校生でperlできるんだーすごいねー
偏差値68以上の学校?
570:デフォルトの名無しさん
08/09/04 02:09:48
>>568
頭が悪いのにも限度があると思うんだ。
571:デフォルトの名無しさん
08/09/04 02:13:39
>>569
年なんか関係ないだろ。黙って勉強しとけよ、青二才。
上では余計なこと書いた。今は反省している。
572:デフォルトの名無しさん
08/09/04 02:16:28
>>571
進学校?数学得意?プログラミングをはじめたのは何才から?
573:デフォルトの名無しさん
08/09/04 06:56:17
スレリンク(php板:981番)
PHPの連中は本当にキモイなぁ
574:デフォルトの名無しさん
08/09/04 08:46:42
perlの連中もきめえよ
575:デフォルトの名無しさん
08/09/04 08:51:19
五十歩ひゃっほー
576:デフォルトの名無しさん
08/09/04 10:18:13
五十歩ヒャッハァーあの村の井戸を奪えー!
この場合は my $well か?
577:デフォルトの名無しさん
08/09/04 12:22:57
この流れワロタ
578:デフォルトの名無しさん
08/09/04 16:00:43
汚物は消毒だーっ!
579:デフォルトの名無しさん
08/09/04 16:55:06
任意の数の配列 @minshu 全てをチェックし、もし obutu であれば値を kasizumi にするソースコードを書け。
ただし @minshu の中に値 kenshiro があった場合は直ちに処理を中止するものとする。
580:デフォルトの名無しさん
08/09/04 17:07:21
自分で書け
581:デフォルトの名無しさん
08/09/04 17:29:48
>579
keshizumi じゃないのか?
582:デフォルトの名無しさん
08/09/04 17:30:41
どこの宿題だよ
583:デフォルトの名無しさん
08/09/04 17:32:56
断る
584:デフォルトの名無しさん
08/09/04 17:52:46
ワンライナー自重
585:デフォルトの名無しさん
08/09/04 17:56:49
ActivePerl 5.10 で、Gmail に Mail::IMAPClient で接続、
メールの添付ファイルを取ってくるスクリプトを書いています。
ログインしてメールの本文などを取得することはできたのですが、
MIME::Parser で parse した時点で、破損したファイル(最後までデータが出ていない)が
出力されてしまいます(output_to_core(1)を消して試してみました)。
この場合、原因として考えられるのは何でしょうか? ここで詰まってしまってます……。
586:デフォルトの名無しさん
08/09/04 19:37:19
どんなスクリプト書いたの?
587:デフォルトの名無しさん
08/09/04 19:49:08
>>586
すいません、最初から書けばよかった。ちょっとはしょってますが、こんな感じです。
use strict;
use MIME::Parser;
use Mail::IMAPClient;
use IO::Socket::SSL;
my $parser = new MIME::Parser;
$parser->output_to_core(1);
my $socket = IO::Socket::SSL->new( PeerAddr => 'imap.gmail.com', PeerPort => 993 ) or die "socket(): $@";
my $client = Mail::IMAPClient->new( Socket => $socket, User => 'hogehogehoogehoge@gmail.com' ) or die "new(): $@";
if ( $client->IsAuthenticated() ){
$client->select('INBOX');
my @uid = $client->unseen;
foreach my $id (@uid) {
my $message = $client->message_string($id) or warn "Timeout!";
my $entity = $parser->parse_data($message);
my $header = $entity->head;
if ( $entity->is_multipart ){
my $parts_count = $entity->parts;
for (my $i = 1; $i < $parts_count; $i++) {
my $part_entity = $entity->parts($i);
my $filename = $part_entity->head->recommended_filename;
my $filebody = $part_entity->bodyhandle->as_string;
open(FILE, ">$filename");
print FILE $filebody;
close(FILE);
}
}
}
}
588:デフォルトの名無しさん
08/09/04 21:11:33
もしかして、他ファイルに定義された変数を
別ファイルから読みたいときは、
「Perlのオブジェクト指向」
を使えばいいんじゃないかな??
あってる?ちがう?
589:デフォルトの名無しさん
08/09/04 21:59:34
>588
誰にレスしてるんだ?
590:デフォルトの名無しさん
08/09/04 22:07:34
オブジェクト指向を使えば、
他ファイルにかかれているmy化された
変数も読めるんじゃないか?
と質問をしてるわけです。
591:デフォルトの名無しさん
08/09/04 22:16:38
今日の発見。
use feature qw( :5.10 );
say 2 ** 50;
これを実行すると
1.12589990684262e+015
とでてくるが、
use bigint;
use feature qw( :5.10 );
say 2 ** 50;
とすると
1125899906842624
と出てくる。
いくつの桁まで表示できるか、
今からちょっと実験してみる。
592:デフォルトの名無しさん
08/09/04 22:17:32
>591
質問は?
593:デフォルトの名無しさん
08/09/04 22:20:03
そういえば、ちょっと前のCGIゲームで、
数値の表記が、3桁づつ、、(カンマ)で
区切られて表示されないのがあって、
これを、3桁づつカンマで区切って表示するように
改造したい、と思ったんだが、これって難しいの?
例
1234567円→1、234、567円
594:デフォルトの名無しさん
08/09/04 22:24:31
printfって知ってるかい?
595:デフォルトの名無しさん
08/09/04 22:27:18
use bigint;
system q|cls|;
use Win32::Sound;
use feature qw( :5.10 );
say 2 ** 55555;
Win32::Sound::Play("file.wav");
↑これすごいよ。
2の55555乗を計算して
画面に出力するんだけど、
DOS窓が全部数字で埋め尽くされてしまって
もはや何桁あるかなんで数え切れないよ。
CPUが計算するのに5秒もかかるし。(ウチのパソコンでは)
596:デフォルトの名無しさん
08/09/04 22:35:28
>>593
1 while s/^([-+]?\d+)(\d\d\d)/$1,$2/;
597:デフォルトの名無しさん
08/09/04 22:54:46
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use bigint;
use feature qw( :5.10 );
use Time::HiRes 'sleep';
system q|cls|;
$|=1;
#----------------------------------
use Win32::Sound;
use feature qw( :5.10 );
say "2を1000回、掛けてみますですよ...";
my $a=2;
say "結果が出ましたですよ...\n".&aaa."ですよ...";
say "あと、結果の出力を画面の真ん中に出すやり方をおしえてくだしあ";
sub aaa{
for (my $b=1;$b<=499;$b=$b+1){
$a=$a*2;
say "2を500回、掛けてみますですよ...";
say "今、第".$b."回目の計算中ですよ...";
say $a;
system q|cls|;
}
return $a
}
Win32::Sound::Play("file.wav");
598:デフォルトの名無しさん
08/09/04 23:02:07
ファイルアップロードしようとして
同じものがあったらエラーって処理をしたいのですが
URLリンク(www.ss.iij4u.or.jp)
ここの改良版の方に
opendir(DIR , $logfiles);
@filelist = readdir(DIR)
closedir(DIR)
foreach (@filelist){
next if $file =~ /^\.{1,2}$/;
if(compare( $fh , $_){
error処理;
}
}
みたいな感じでやっているのですが
上手くいかんのです
たすけてくだしあ
599:デフォルトの名無しさん
08/09/04 23:17:18
-fとかでいいだろ
600:デフォルトの名無しさん
08/09/04 23:19:54
名前を変えてるのでcompareで比較がしたいのです
助けて下しア
601:デフォルトの名無しさん
08/09/04 23:21:56
compareって何だよ
602:デフォルトの名無しさん
08/09/04 23:22:18
>>598
webprog板池よ
603:改良版ですよ1
08/09/04 23:42:40
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use bigint;
use feature qw( :5.10 );
system q|cls|;
use Win32::Sound;
my $a=2,$c,$d,$f;
print "2を何乗させたいのか、数字を入力してくだしあ(例:500)>";
$f=<STDIN>;
chomp $f;
my $e=$f;$d=$e-1;
$c=&aaa;&bbb;
Win32::Sound::Play("file.wav");
sub aaa{
for (my $b=1;$b<=$d;$b=$b+1){
say "2の".$e."乗を計算してみますですよ...";
say "今、2の".$b."乗目の計算中ですよ...";
say $a; $a=$a*2;
system q|cls|;
}
return $a
}
sub bbb{
say "結果が出ましたですよ...\n";
say "2の"."$e"."乗は ".$c." ですよ...";
say "あと、結果の出力を画面の真ん中に出すやり方をおしえてくだしあ\n";
}
604:デフォルトの名無しさん
08/09/04 23:47:43
これなんじゃないの?
use File::Compare;
URLリンク(d.hatena.ne.jp)
605:デフォルトの名無しさん
08/09/04 23:49:39
自分でプログラム組めるようになると
すっごい楽しいね!
606:585
08/09/05 00:02:52
分からない! 誰か助けてください……。
607:デフォルトの名無しさん
08/09/05 00:03:52
>>598
最近、知ったんだけど、下記で、"."や".."を含まない、ファイル一覧が得られる。
@filelist = <$logfiles/*.*>;
608:607
08/09/05 00:06:48
そしたら、>>598の処理がこんなに短くなったり。。。
foreach (<$logfiles/*.*>){
if(compare( $fh , $_){
error処理;
}
}
609:デフォルトの名無しさん
08/09/05 00:21:48
>606
WebProg池、と言おうと思ったが、問題はそこじゃないっぽいしなあ。
>598>607
状況次第だが、毎回ファイルの中身を全チェックだと効率悪すぎないか?
バイナリから何らかのハッシュを生成しておき(同一バイナリなら同一のハッシュ)、
そのハッシュを保存しておいて比較した方がいいと思う。
稀に別バイナリが同一ハッシュを返すこともあるが、
その時は諦めるか、バイナリを直接比較すればいい。
610:デフォルトの名無しさん
08/09/05 01:22:26
>>585
現象は添付ファイルの種類を問わず発生しますか?
複数のファイルを用意し、それぞれを添付したメールを用意して試してみましょう。
添付ファイルのファイル名に日本語が含まれているか否かで変化があるか確認してください。
611:デフォルトの名無しさん
08/09/05 01:26:40
>>607
本当に? 間違いない? 信じて大丈夫?
いや、誰も信じないからいいんだけどさ。
612:585
08/09/05 01:32:48
>>610
添付ファイルの種類を問わず発生しているように見えます。試しているファイルはすべて英語名です。
binmode FILE することで、JPG は開くことができるようにはなりました。
PDF = ファイルが壊れている、と出て開けない。
JPG = 画像の下の方がブロックノイズ(最後までデータができていないっぽい)
HTM = ファイルの最後の方で途切れてしまう。
TXT = ファイル末尾に謎の文字化け。(=ェ涇攵モ]スクラmエ輜オラ ←こんなのが。なんだこりゃ。)
message_to_file で書き出してみたファイルを見る限りでは、途中でデータの転送が止まっているようなこともなく、
正常に処理できているように見えます。parse_data して、print する途中でどこか変なところがあるのでしょうか。
613:デフォルトの名無しさん
08/09/05 04:05:43
xorってよくわからないな。
614:デフォルトの名無しさん
08/09/05 04:14:30
ヘルプに誤字発見。これってどこに通報すればいいの?
Parentheses missing around "my" list at 1.pl line 27 (#1)
(W parenthesis) You said something like
my $foo, $bar = @_;
when you meant
my ($foo, $bar) = @_;
Remember that "my", "our", "local" and "state" bind tighter than comma.
615:デフォルトの名無しさん
08/09/05 04:42:13
stateって結構便利だと思うんだけど、
これってバリバリつかっていいの?
gotoみたいに、「絶対に使うな!」とかって怒られない?
616:デフォルトの名無しさん
08/09/05 07:46:59
perlのゲーム作りたいなー
誰か一緒に作らない?
617:デフォルトの名無しさん
08/09/05 07:54:21
>615
ちゃんとメリットとデメリットを理解して、それが適切だと思えば
別に何を使って良いんでねーの?
stateを使うならオブジェクト指向にしてもいいかなあと思ってみたが、
これは単に自分が無知なだけか。
>616
ゲ製板池
618:デフォルトの名無しさん
08/09/05 08:21:12
URLリンク(www.geocities.jp)
このページすごいわかりやすいね
619:デフォルトの名無しさん
08/09/05 10:55:16
>>609
Webprog 板に行ってきますヽ(´Д`;)ノ
620:デフォルトの名無しさん
08/09/05 12:06:49
>>618
宣伝厨うざい、マルチウザイ
>print "$str"; # ***123***\n を出力
こんな事書くアホなページの宣伝すんな
「参考書籍」でPBPやらEffectiveやら勧めてるが
読んでないのバレバレじゃねえか
621:デフォルトの名無しさん
08/09/05 12:17:37
そこまで過剰に反応する意味がわからない。
622:デフォルトの名無しさん
08/09/05 12:34:15
>>621
> そこまで過剰に反応する意味がわからない。
ウソが広まるのを放置しておくと何年もすべての人が被害を被り続けるからでしょう
623:デフォルトの名無しさん
08/09/05 13:45:58
まぁ実際、とほほとKENTで広まりまくってるけどな
624:デフォルトの名無しさん
08/09/05 15:19:06
だからこそ過剰に反応するんだろうな
625:デフォルトの名無しさん
08/09/05 16:09:32
これだから原理主義者は困る
626:デフォルトの名無しさん
08/09/05 16:13:05
オライリーの「プログラミングPerl」
って、読んだけど、よくわからないね、難しくて。
これって中級者以上向けだよね。
627:デフォルトの名無しさん
08/09/05 16:18:27
>626
ラクダの前にリャマがいるだろ
628:デフォルトの名無しさん
08/09/05 16:29:40
「はじめてのPerl」ね。
うん、そっちから読んだ方がいいみたいだね。
629:デフォルトの名無しさん
08/09/05 16:30:31
Perlでソースコード書いて、
それをCのコードに変換するのってできるの?
630:デフォルトの名無しさん
08/09/05 16:42:34
Cで書けばいいんじゃね?
631:デフォルトの名無しさん
08/09/05 16:50:01
>>629
つB::C
でもperlらしいperlプログラムはたいていCにしても速くなんないから
やめとけ。
632:デフォルトの名無しさん
08/09/05 20:15:47
「続・はじめてのPerl」読んでみたけど、わからんね。
理解できるページが3ページくらいしかない。
633:デフォルトの名無しさん
08/09/05 20:16:52
>>631
速度を速くしたいんでなくて、
あの難しいCのプログラムを自分の手で
生成できるというのがしびれるんです。
昔C勉強したけど結局理解できなかったし。
そんで、B::Cで検索しても情報がでてこないんで、
使い方を解説してあるページを教えてもらえますか?
634:デフォルトの名無しさん
08/09/05 20:26:11
CもPerlも難易度なんて変わらんと思うけどな。
むしろPerlの方が覚えること多い印象だが。
635:デフォルトの名無しさん
08/09/05 20:30:20
>>633
URLリンク(search.cpan.org)
636:デフォルトの名無しさん
08/09/05 20:48:28
>>635
よんだけどわからないよどうしよう
日本語で詳しく説明書があるサイトをおしえてください
637:デフォルトの名無しさん
08/09/05 20:54:13
Can't locate B/C.pm in @INC
(@INC contains: C:/Perl/site/lib C:/Perl/lib .)
at 6.pl line 1.
BEGIN failed--compilation aborted at 6.pl line 1.
とでてくるのですが、ひょっとして
自分のパソコンにはB::Cが入っていない?
これってPPMで入れるの?
638:デフォルトの名無しさん
08/09/05 20:55:27
>>636
それを読み解く気合がないなら、その類のモジュールは楽しめない。
639:デフォルトの名無しさん
08/09/05 21:00:52
>>637
そこから手取り足取り教えにゃわからん奴がちょっかい出すブツじゃないよ。
640:デフォルトの名無しさん
08/09/05 21:05:05
いやまじでボクのパソコンにはB::Cが入ってないような気がします。
これはどうやったら確定できますか?
それでPPMみたんですけど、そこにもB::Cが登録されてないんです。
641:デフォルトの名無しさん
08/09/05 21:15:19
しんごけ
642:デフォルトの名無しさん
08/09/05 21:15:40
5.10だと、perlccやらB::Cやらはごっそり標準配布から無くなってるが
もしかして5.10? perldelta参照してみそ
…つーか深追いすんな、しても無意味だ。
ちょっとした想定外のモジュールをuseしてるだけで、B::Cは通らない
んだから(実用的じゃ全くない)。
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の機能を
使わなければいいだけだから。