トップページ⇒php
981コメント366KB

【Perl 】初心者コーナーPart6

■ このスレッドは過去ログ倉庫に格納されています
0001undefさん2001/07/26(木) 00:40ID:???
初めて来た方、初心者はまずこのスレッドから始めよう。
尋ねる前に同じ質問がないかこのスレや旧スレ、及び>>2のリンクを一通り見てみよう。
案外答えはもう書かれているかもしれない。
03493442001/08/10(金) 01:22ID:???
>>345
>>347
両方ともだめでした。
htmlファイルを作るタイプだからだめなのかな
public_html/cgi-bin/bbs.cgi
に投稿して、普段は
pubglic_html/index.html
をアクセスするタイプです
0350名無しさん@お腹いっぱい。2001/08/10(金) 02:17ID:uDrjeUNE
>>349
Location
0351ナナ萌え(゚д゚)ウマー2001/08/10(金) 03:18ID:???
if ($comment eq "") {
  print "Location: $path\n\n";
}
0352名無しさん@お腹いっぱい。2001/08/10(金) 13:54ID:???
ls-lRって何ですか?
0353名無しさん@お腹いっぱい。2001/08/10(金) 14:01ID:???
コマンドです
0354名無しさん@お腹いっぱい。2001/08/10(金) 14:49ID:ed6w6DP2
perl test.pl > test.txt
のように出力先をtest.txtに設定した状態で、
例外的にプロンプトの方に出力させるには
どのように書けばよいのでしょうか。
0355名無しさん@お腹いっぱい。2001/08/10(金) 15:03ID:???
>>353
どういう役割のコマンドなんですか?
03563372001/08/10(金) 15:08ID:???
>>352
君、板からして間違ってるよ。
0357名無しさん@お腹いっぱい。2001/08/10(金) 15:09ID:???
名前残ってた。
逝って来ます。
0358名無しさん@お腹いっぱい。2001/08/10(金) 15:39ID:???
>>354
print "1";
print STDERR "2";
0359名無しさん@お腹いっぱい。2001/08/10(金) 17:37ID:ed6w6DP2
正規表現に変数って使用できないんですか?

$a="abc";
$b="abcdef";

if($b=~ /$a/)
{

イメージとしてはこんな感じです。
0360名無しさん@お腹いっぱい。2001/08/10(金) 17:38ID:ed6w6DP2
あ、の前に、>>358さん感謝です。
0361名無しさん@お腹いっぱい。2001/08/10(金) 17:54ID:???
($b=~ /\Q$a\E/){
これか、、
http://corn.2ch.net/test/read.cgi?bbs=php&key=988728069&st=518&to=526&nofirst=true
0362名無しさん@お腹いっぱい。2001/08/10(金) 18:48ID:???
>>355
ls -lRなら知ってる、"ls"はディレクトリを表示するUNIX系OSのコマンド
DOSの"DIR"みたいな奴だ。
"-lR" はオプションで、まぁその根こそぎ表示すると思ってくれればいい。
systemが投げるコマンドが解らない時はこんな所を探して調べればいい
http://www.linux.or.jp/JM/
0363名無しさん@お腹いっぱい。2001/08/10(金) 20:00ID:???
myってなんで使わなくてはいけないのですか?
処理速度が速くなったりするのですか?
0364名無しさん@お腹いっぱい。2001/08/10(金) 20:01ID:???
>>363
相手にされたければ黙って使っておけ。
0365. 2001/08/10(金) 20:10ID:qy20tGgA
>>364
君の能力ではその程度に認識なのかも知れないが、世の中には自分以上の
人間や物事を深く掘り下げて認知しようとする人間
が沢山居ると言う事を忘れてはいけない
0366名無しさん@お腹いっぱい。2001/08/10(金) 20:14ID:???
>>365
今度はこっちに来たの? やれやれ……。
0367名無しさん@お腹いっぱい。2001/08/10(金) 20:24ID:???
>>365
勘弁してよ。
君のためのスレはちゃんとあるんだから。
もうこっち来ないでね。
0368トリップの解析したい人2001/08/10(金) 22:58ID:???
質問なんですが、Perl板っていうのはこのスレのことですか?
それとも他にPerl板っていう板があるんですか?
0369名無しさん@お腹いっぱい。2001/08/10(金) 23:01ID:???
>>368
http://corn.2ch.net/test/read.cgi?bbs=entrance&key=997381086&st=119&to=119
03703682001/08/10(金) 23:11ID:???
>>369
すいません、そのプログラム?の意味がわかりません。

質問させてもらいます。今、トリップスレに書いてあった
#!/usr/local/bin/perl

$counter = 'aaaaa'; # マジックインクリメント用
$seed = 'Q!<'; # ランダムな文字列
$str = 'nofx'; # 探す文字列の正規表現

while(1){
$_ = substr(crypt("$counter$seed", 86), -8);
print "$counter$seed - $_\n" if /$str/oi;
last if ++$counter eq 'aaaaaa';
}
っていうのでやってみて実際動作したんですが、
これの結果を自動でテキストで保存できるようには
できませんか?

トリップスレの方は解析で忙しそうなので…
0371名無しさん@お腹いっぱい。2001/08/10(金) 23:21ID:???
リダイレクトしろよ
そんなのPerlの質問ですらないぞ
0372ループ鯖完  T_T2001/08/10(金) 23:48ID:???
よく解らないのにforとかwhileの中適当にいじりながら
実験するのはやめておくれよぅ・・・・・
0373 ◆0nyWWW/22001/08/11(土) 00:06ID:???
へぇ。トリップなんてはじめて知ったYO!
0374名無しさん@お腹いっぱい。2001/08/11(土) 00:19ID:???
うわスマソ >>みなさん、>>365はKENTクンじゃない
家の弟です。 迷惑かけて申し訳無い
んにゃろ、、ぶっ頃してやる
0375pp2001/08/11(土) 00:22ID:???
http://ton.2ch.net/test/read.cgi?bbs=sec&key=996966367
↑
すいませんが、このスレの40ってどういう事?
取り敢えず可能なんですね?
0376名無しさん@お腹いっぱい。2001/08/11(土) 00:29ID:???
なんか荒れてきたカナー
>>375
実際出来てる所見ると可能なんでしょう、もう対策されたみたいですけども
PG板で おしえて!!! とかスレ立てちゃだめだよ。
03773332001/08/11(土) 02:01ID:V2ESYaRc
誰か>>333をどうやればいいか教えていただけませんか?お願いします。
0378名無しさん@お腹いっぱい。2001/08/11(土) 02:13ID:???
>>377
うーん、スクリプト見るのが面倒だ。
Perlの話というより、CGIの改造でないかと、コレ。
というか、336で決着ついてないのかな?
# ネタだったりして(w
0379名無しさん@お腹いっぱい。2001/08/11(土) 02:15ID:???
指定ディレクトリ以下すべてのテキストファイル内の特定の文字列を
一気に置換するのに一番効率のよい方法あるでしょうか?
ログファイルのコンバートに使いたいのですが・・・
よろしくです。。。
03803332001/08/11(土) 02:23ID:V2ESYaRc
>>378
>>336の通りにすると>>341のような現象が起こるので解決してません。
自分でも@new=sort(@new);とか考えられる限りの事は尽くしてみたんですができませんでした。
0381名無しさん@お腹いっぱい。2001/08/11(土) 04:46ID:???
このスレで、初心者です、と自己紹介してから質問してる人よりも激しく初心者な俺・・・・・・

こんなんでやっていけるのだろうか
0382名無しさん@お腹いっぱい。2001/08/11(土) 04:47ID:???
しかも、sageようとしてageちゃったし・・・・
0383名無しさん@お腹いっぱい。2001/08/11(土) 05:00ID:???
>>381
やってれば自然と出来るようになるよ。
0384名無しさん@お腹いっぱい。2001/08/11(土) 06:29ID:j13TLi42
>379
perl -pi.bak -e 's/foo/bar/g' *.logとか?

.logの拡張子のファイル中のfooをbarに変換し、
元のファイルはhogehoge.log.bakみたいに保存される
サブディレクトリ以下も対象ならuse File::Find等使えばok!

でも一番効率の良い方法ってどういう意味?こんなの、
効率も糞もないと思うのだけど…
0385名無しさん@お腹いっぱい。2001/08/11(土) 11:58ID:X8Jv3YYU
>384
環境によっては動かない(特にWindows系は*の処理がイマイチ)

>379
環境も書いとけ。systemコマンドでシェル使ったほうが早い場合も
あるからな。
0386名無しさん@お腹いっぱい。2001/08/11(土) 20:50ID:???
ord関数の逆の動作を行う関数ありませんか?
03873862001/08/11(土) 20:53ID:???
失礼。
事故解決しました。
0388379 ◆PL.a6eWs2001/08/11(土) 23:47ID:???
>>384さん、
>>385さん、どうもありがとうです。

>でも一番効率の良い方法ってどういう意味?
ええと、効率がよいじゃなくてperlのみでできて環境に依存しない
方法でした・・・スマソ
サーバー上に変換スクリプトをおいて(シェルはつかえないので)したいなと
思ってますです。
ローカルのWinの環境でも出来ればそれでいいんですが。。。
0389kkkkkkkk2001/08/12(日) 02:40ID:???
トクトクというところで借りて、以下のようなものをアップしたんですが
動かないんです。

#!/usr/bin/perl
print "Content-type: text/html\n\nOK.\n"; exit(1);

なにが悪いんでしょう。
cgi本体:http://www41.tok2.com/home/harebare/cgi-bin/test.cgi
ファイル名に.txtをつけたもの。
http://www41.tok2.com/home/harebare/test.cgi.txt

こんな簡単なことではまるなんて。
cgi-binのパーミッションは701
test.cgiは700。

だれか助けて〜
0390 ◆0nyWWW/22001/08/12(日) 02:42ID:???
・#!行
・改行コード
・全角文字が混じっていないか
0391kkkkkkkk2001/08/12(日) 02:50ID:???
ありがとうございます。

利用するにおいての注意事項はありますか?
・倉庫としてのご利用(音楽・画像等のデータを置いておくだけ)は出来ません。
・「index.html」もしくは「index.htm」の設置は絶対に必要です。
・「index.html」もしくは「index.htm」に<TITLE>タグでタイトルを記入しておいて下さい。
記入されていない場合、アクセスランキングに参加出来ません。
・CGIのみの使用は禁止しております。

↑こいつのせいでした。
0392名無しさん@お腹いっぱい。2001/08/12(日) 06:45ID:???
>>388 「教えて君」の臭いが…

まずは自分で作ってみたの?そんなの数行で出来るぞ。
初心者だからといってなんでも人に頼ってはPerlの上達も
見込めないよ。

「こう作ったんですけど動かない」ならともかく、何も
ものがなくて、教えてと言われてもね。特にPerlは、
やり方は何通りもあるんだから。
0393名無しさん@お腹いっぱい。2001/08/12(日) 20:32ID:???
すみません、教えていただけませんか。
テキストファイルを読み込んで、'ポニーテール'のはいった行を抽出しようとしました。
push(@out, $_) if($_ =~ m/ポニーテール/);
とすると、最初の「ー」がまずいというエラーが出たので、
push(@out, $_) if($_ =~ m/ポニ/);
とすると、ほとんどの行が当てはまってしまいました。

後半のまずいのはたぶん、windows98 + ActivePerlで「ポ」の文字コードの後半が
0x7cで|ですから、part1の「鉄鋼」が化けるのとおなじじゃないかなと思いましたけど
読んでも対策ができませんでした。よろしくお願いします。
0394名無しさん@お腹いっぱい。2001/08/12(日) 21:36ID:???
>>393
push(@out, $_) if($_ =~ m/\Qポニーテール\E/);
0395名無しさん@お腹いっぱい。2001/08/12(日) 21:54ID:???
>349
ありがとうございます。できました。
\Qは、\Eがでるまでのメタキャラクタを打ち消すんですね。勉強になりました。
03963952001/08/12(日) 21:59ID:???
すみません、395は349さんじゃなくて、394さんへの感謝です。
0397名無しさん@お腹いっぱい。 2001/08/13(月) 00:38ID:???
>初めて来た方、初心者はまずこのスレッドから始めよう。
>尋ねる前に同じ質問がないかこのスレや旧スレ、及び>>2のリンクを一通り見てみよう。
>案外答えはもう書かれているかもしれない。

1にこう書いてある。 どうして過去ログ読まないんだろう。
せめて初心者スレッドの過去ログくらいは…。
本当に役に立つ事が書いてあるよ。もちろん改行コードとか\Qとかも。
0398名無しさん@お腹いっぱい。2001/08/13(月) 04:54ID:a9/FXvbY
g-zip圧縮転送ってどうやるの?
ACCEPT確認してエンコートヘッダにg-zip指定するだけじゃだめなんでしょ?
0399名無しさん@お腹いっぱい。2001/08/13(月) 15:45ID:JzeNXb.k
Active perlでロングネームの方のファイル名取得方法
教えて〜ん。
0400名無しさん@お腹いっぱい。2001/08/13(月) 16:15ID:???
>399
普通に取得できますが何か?
0401名無しさん@お腹いっぱい。2001/08/13(月) 16:35ID:???
Active Perl をローカルで使ってテキストを処理したとき
改行コードを \n にしても \r にしても、同じ結果になるんだけど、(0D 0A だったかな)
回避方法あります? わざわざ、サーバにアップロードするのは面倒なんで…
0402名無しさん@お腹いっぱい。2001/08/13(月) 16:55ID:???
>>401 perldoc -f binmode
04033992001/08/13(月) 17:16ID:JzeNXb.k
>>400
失礼。説明が足りませんでした。
SOSヘッダ付けたperlスクリプトにD&Dでファイル渡すとショートファイルネームで引数に渡されるのです。
で、渡されたファイル名を出力したいんですが、その時にロングファイルネームで出力したいんです。
なのでショートファイルネームをロングファイルネームに変換する方法教えて〜ん。
0404◆/InUhgpU2001/08/13(月) 18:52ID:???
Win32::GetLongPathName()
04054012001/08/13(月) 21:57ID:???
>>402
ありがとうございます。できました。
04063992001/08/13(月) 22:24ID:???
>>404
それそれー
あんがとーん。
0407名無しさん@お腹いっぱい。2001/08/13(月) 22:41ID:7FPat022
PERL5.6のバグ?

my($str) = q{1  2  3  4  5  6};

if ($str =~ m/^(?:[^\t]*\t){4}5/) {
  print 'OK';
} else {
  print 'NG';
}
print "\n";


下記のコードですが、
perl5.005はOK
perl5.6はNG
になります。
※タブは全角スペースに変換してます。

分かる方いますか?

ちなみに、
m/^(?:[^\t]*\t){3}[^\t]*\t5/
はとおります。。謎
0408◆/InUhgpU2001/08/13(月) 23:09ID:???
1〜6の間もタブなんだよな?
qq{1\t2\t3\t4\t5\t6};
なら"OK"になるが。
当方ActivePerl5.6.1…

ってアレ?5.6.0だとNGだな…何故だろう。
0409UUDH2001/08/13(月) 23:42ID:???
@test2 = ("miyata<>21<>men<>","yokoi<>39<>women","nagata<>26<>men","yanase<>26<>men",);
foreach (@test2){
@temp = split (/<>/ ,$_);
if ($temp[0] eq yokoi){
next;
}else{
push (@out,"$temp[0]<>$temp[1]<>$temp[2]<>\n");
}
}
print "@out\n";

とすると、何故か2行目の頭から空白が入ってしまいます。
もう正規表現とかで何でもかんでも取り払っても入ってしまいます。
3日たって何が何かわからなくなってきました。、、、、
0410名無しさん@お腹いっぱい。2001/08/13(月) 23:55ID:???
>>409
俺も良くわからないけど改行コードの問題な気がする・・・。
0411◆2O1OO1O22001/08/13(月) 23:56ID:9/vbk82Q
>>409
> print "@out\n";
配列をダブルクオートの中に入れると、要素の間にスペースが入る。
print @out;
でいいんじゃない?
0412名無しさん@お腹いっぱい。2001/08/13(月) 23:57ID:???
>>409
#最終行
print @out, "\n";
#or
local $" = "";
print "@out\n";

#yokoiはクォートしろ
0413名無しさん@お腹いっぱい。2001/08/14(火) 02:51ID:???
>>398
このスレではわからん
0414UUDH2001/08/14(火) 04:30ID:???
あぁ〜 神です!!、このスレには神が居るです!
>>410
僕もそう思いましてあちこちで\wと\d以外は全部捨てたりしてみたんですが
解決できなくて、、まさか一番最後だったとわ
>>411
今まで " は有っても無くてもほぼ良し、位に思い込んでました。
ダメだなぁ、、今KENTさんのチャット見るとやっぱり裸のまま
printしていました。
まだコンテキストが良く理解出来てない様で度々こう言うトラブル
に見舞われています 
>>412
これはどちらも絶対解らなかったです。
. じゃ無くて , なんですね。 初心者本には載ってないなぁ
方法2の方は局所的に " を意味の無いものにすると言う感じでしょうか
localも使うこと有るんですね、ふかいッス 
>#yokoiはクォートしろ
YES SIR!!!、ゴチャゴチャしていて段々無茶苦茶になっていました

一人だと絶対自己解決出来なかったです。 大感謝です!!>>みなさん
きっと良書を沢山読んでいるから、こう言う事で躓かないんですよね
まだ結城さんの本と、WEBだけで粘ってるのですが、ちょっと限界かなぁ。。
書籍スレを読み直してみます。
プログラミングPerlとか買っちゃっても大丈夫かな、、  (^^;)

もう一回PART1から読み直してみよう、有難うッス>>みなみなさま
0415UUDH2001/08/14(火) 05:00ID:???
@test = ('hokkaidou','aomori','yamanashi','iwate','tokyo','kyoto');
$scalar1 = @test;
$scalar2 = "@test";
print '配列が裸で評価されると・・・'."\n";
print "$scalar1\n".'↑要素数が返る'."\n\n";
print ' " で括って評価されると・・・'."\n";
print "$scalar2\n".'↑要素を空白で区切ったものが返る'."\n";

うれしかたので、カキカキ、、、
配列の中? がカンマデリミタになってると思い込んでたのが気付かなかた
原因でした それ位カンマが出力されない時点で気付けよ=>漏れ (;´Д`)
0416名無しさん@お腹いっぱい。2001/08/14(火) 05:23ID:???
>>414
> 方法2の方は局所的に " を意味の無いものにすると言う感じでしょうか
これって、local $" = ""; のほうって事?
これは配列をダブルクォートの中に入れたときに要素間に入る文字列を定義してる。
デフォルトはスペースになってる。ためしに$" = ":" とかやってみると良いよ。
こういう特殊変数はラクダ本に全部載ってるし、やっぱラクダ本買うべし。
0417名無しさん@お腹いっぱい。2001/08/14(火) 08:23ID:GO0JN5uY
/を
クエリーストリングで扱う方法ってないですか?
/もクエリーストリングとして扱いたいのです
04184172001/08/14(火) 11:24ID:GO0JN5uY
すんまンソ
できた。っていうか勘違い
0419名無しさん@お腹いっぱい。2001/08/14(火) 14:51ID:???
クエリーストリングという表現を初めて見た。
いや別に間違っちゃいないけどね…。
0420KENT-WEB2001/08/14(火) 16:03ID:???
    /   ̄  \
  /    イヤー笑った笑った
KENT-WEBのギャグは素晴らしい
簡単なスクリプトを複雑に記述し
一見難しいスクリプトに見せかけている\
  /     ⌒  ⌒  |
 |      (・)(・)  |
 |   三  ○  三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |     ___  |  < hello world!からやりなおせ。
  |\   \_/ /    | サイトのパーミッション777にしろ。
  \ \___//     \_________
   \_/  \/
     |==|
      \Ω/
死ね・くたばれ・消えろ・失せろ・潰れろ・馬鹿・あほ・間抜け。ドジ・ 無能。
0421名無しさん@お腹いっぱい。2001/08/14(火) 16:07ID:???
誤爆かよぅ・・・・ -_-
0422名無しさん@お腹いっぱい。2001/08/14(火) 17:38ID:xRewybvc
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=997612896
で訊くよりもここにこいと言われました。
f2sでGDモジュールを使いたいのですが、
モジュールってインストールする必要があるんですよね?
>telnet.cgi かなんかを使って自分のスペース上でインストールする。
>次に、GD モジュールについて同じことをする。
と教えられたのですが、telnet.cgiはどこで配布されているのですか?
0423名無しさん@お腹いっぱい。2001/08/14(火) 17:52ID:???
http://www.catkk.co.jp/gu/telnet/
これか?
0424名無しさん@お腹いっぱい。2001/08/14(火) 18:09ID:xRewybvc
>>423
ありがとうございます。
使い方が分かりません。書いてある通り
アップロードしてタイトルの「$ownhost」というようなのを
CGIファイルの「$Host」に設定し再アップロードしましたが、
そこからがわかりません。手順を簡単にで結構ですので、
説明していただけませんか。
0425名無しさん@お腹いっぱい。2001/08/14(火) 19:46ID:???
gethostbyしてないから$ownhostにhostが入ったりipaddressが
入ったりする、F2sは使ったこと無いからわからんから
論理行の13行目を
$Host = $ENV{'REMOTE_HOST'}; にしちゃえ

後は上の方の設定をちゃんとして、作業が終わったら
*****速攻で*****削除する事だ
ccが使えないとか言うなよ
0426UUDH2001/08/14(火) 20:38ID:???
>>416
はぅっ、まだ間違えてる、、、思いっきり特殊変数じゃん、、、
いつも @aray = ('1','2'); とかしてるんで 勝手にデフォルトのバウンダリは
コンマだと思い込んでたのがいけなかったみたいです。
>やっぱラクダ本買うべし。
了解!! まだ持って無いけど他の皆さんにも推奨  (わ
サンキューです。
0427名無しさん@お腹いっぱい。2001/08/14(火) 20:39ID:???
今、掲示板のデータファイルから、
画像URLを読み込んで画像を表示させてるのです。
決まった縦横サイズの画像だけを表示させたいのですが、
何か画像情報を取得する方法はありますでしょうか?
0428名無しさん@お腹いっぱい。2001/08/14(火) 22:20ID:???
>>427
画像のフォーマット調べれば取得できるけど。

まあ、面倒ならこれ使うとか。
http://www-power.net/cgi/other/library/stdio/reference/
の getImageSize()
0429名無しさん@お腹いっぱい。2001/08/14(火) 22:25ID:???
そのものズバリImage::Sizeがある
0430名無しさん@お腹いっぱい。2001/08/15(水) 00:56ID:???
>>416 >>426

特殊変数なら perlvar に全て書いてあるし、
邦訳青ラクダ本って内容が5.003の頃のだから古い。
ラクダ本に書かれている事は同じ内容でドキュメントにも書かれてる。
そのドキュメントの邦訳も存在する。

これでも推奨?
0431名無しさん@お腹いっぱい。2001/08/15(水) 01:14ID:???
>>430
> そのドキュメントの邦訳も存在する。
どこの事ですか?
0432名無しさん@お腹いっぱい。2001/08/15(水) 01:30ID:avupzYrQ
>>431
http://www.att.or.jp/perl/man/
こことかじゃない?
でも、自分で、探してよ・・・。
0433名無しさん@お腹いっぱい。2001/08/15(水) 01:58ID:???
Perl5.6.0ベースのドキュメントの邦訳があれば折れは要らんかな。
でも紙とWebページじゃ読みやすさが全然違うので初心者には奨励する。
04344272001/08/15(水) 02:31ID:???
>>428 >>429
ありがとうございました。
getImageSize() を試してるのですが、pngの情報だけ読めず・・・.
どうしてなのか? うう。
0435名無しさん@お腹いっぱい。2001/08/15(水) 02:53ID:???
>>432
御免なさい。一応確認したかったもので。
0436名無しさん@お腹いっぱい。2001/08/16(木) 11:13ID:Z9iCsVz2
ご教授お願いいたしたく。

open関数で取得できるファイルリストの件数に上限はあるのでしょうか?
ファイル数が4000ちょっとまでなら取得できるのですが、それ以上存在する場合、
ファイルハンドルには空が返ってくる模様…
もし上限があるとするならば、どのように対処するのが吉でしょか?
よろしくお願いいたします。
0437名無しさん@お腹いっぱい。2001/08/16(木) 11:15ID:Dm7Pm6YQ
すみません。初心者質問です。
無名配列ってなんなのかいまいち掴めません。。
それにどんな事に使ったら有効か教えてください。。
お願いします。
0438名無しさん@お腹いっぱい。2001/08/16(木) 13:08ID:Z1NIPYXE
$abc_ref = ["a", "b", "c"];
とすれば、スカラー変数に無名配列のリファレンスが保存でけるでそ?
でさ、普通配列ってさ、(("a", "b", "c"), ("d", "e", "f"))みたく単純には階層化できません。
厳密に言うとスカラー値しか入れられないからね。
さっきの $abc_ref を使えばそれが出来るようになるってわけさ。
無名配列や無名ハッシュを使えば多重構造の変数が出来上がります。
0439名無しさん@お腹いっぱい2001/08/16(木) 15:43ID:.lon33X.
任意日付から曜日を求めるにはどうしたらいいですか?
0440名無しさん@お腹いっぱい。2001/08/16(木) 15:58ID:???
>>439
「日付 曜日 公式」とかで検索したらわらわら出てくるぞ。聞く前に自分で調べようね。
0441T女の竹田2001/08/16(木) 16:00ID:???
>>439
timelocal(Time::Local)とlocaltimeにかけるといいよ。
0442名無しさん@お腹いっぱい。2001/08/16(木) 22:54ID:???
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃  ただいま、ラウンジで大盛り上がりのブラウザ戦争ゲーム! .  ┃
 ビビー       ______________
 [>>8888888  ‖|*ENDLESS BATTLE@2ch*|‖      . \冂/
           ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄     . E´∀` ヨi /7
 逝って良し!を発動。   . ミ从、;、;从 彡   ボシュッ .())  「/~'ー'~~ 7/ ̄ |
  ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ http://wwwwwwwww  ===二]匚ト〈‐〈iテ〈〈c iエコ
    ∧ ∧ [》∞∝     彡゙ ゙/;´ミ  ∧∧∧∧      []v/□ || ╋|
  冂(,,゚Д゚) ウマー   ボンッ | |(*゚Д゚)| <覚醒中!>     | j | |.|| ┃|
 | ̄\つ∧二ヽ       ∩ >->_>->_<要塞に  >    几0(几)L二!
 \_匚i_|∪∪i]      ((_(∴ヽヽ\(∴|当たる!>   ∠三ヲ/i二iヽ
   \_/二/  〜〜 /oヽヽ ,>─>ヽ ∨∨∨∨    __∧___
  [》∞∝         く。◎◎)=)__/)=)    ψ ζ     させるかあ!
                  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  恨み!復讐!英雄の誕生!生身の人間とのどろどろした戦闘!  ...

┃http://corn.2ch.net/test/read.cgi?bbs=entrance&key=997943180 .┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
0443名無しさん@お腹いっぱい。2001/08/16(木) 23:01ID:/rmEQXZ6
分岐して文章返す関数で、いちいち$ret .= 'ABC'; return $ret;ってやるのがめんどうなので、
print 'age'; print 'sage';
とやって
$buffer eq 'agesage';
にすることはできますか? できるならやりかた教えてください。
やりたいことは、printとか短い文での変数への書き込みです。

>>436 当方初心者ですが、システム依存のような気がします。
何やろうとしてそんなにファイル開くんですか?
0444名無しさん@お腹いっぱい。2001/08/17(金) 00:53ID:???
>>443
全然意味ワカンナイですけど。
print $buffer .= "age";
とか云うことじゃないよね?
0445名無しさん@お腹いっぱい。2001/08/17(金) 01:06ID:???
IO::Scalarというモジュールで
$foo = new IO::Scalar;
$foo->print("bar");
$foo->print("baz");
print $foo;# output "barbaz"
という書き方が出来る。
0446名無しさん@お腹いっぱい。2001/08/17(金) 01:14ID:???
>>443

#!/usr/bin/perl

package ScalarHandle;
use base 'Tie::Handle';

sub TIEHANDLE {
my $self = bless {}, shift;
$self->{_ref} = shift;
$self;
}

sub WRITE {
my ($self, $scalar, $len, $ofs) = @_;
my $_ref = $self->{_ref};
$$_ref = join '', $$_ref, $scalar;
$len;
}

package main;

my $buffer = '';
{
tie local(*H), ScalarHandle => \$buffer;
use SelectSaver;
my $saved_h = SelectSaver->new(\*H);

print 'hoge', 'foo';
}
print $buffer;

__END__
0447名無しさん@お腹いっぱい。2001/08/17(金) 01:51ID:???
余談だがIO::Scalarも
tie *Handle, 'IO::Scalar';
という使い方が可能だ。
04484432001/08/17(金) 03:13ID:???
ありがとうございます。 勉強になります。
>>445 あ、けっこうズバリなモジュールがあったんですね。
>>446
 むつかしくて読むのにだいぶ時間かかりましたが、なんとなくわかりました。
ファイルハンドルを上書き実装して、バッファの後ろに足していってるんですね。
>>447 こういうふうに使うと、多分4行くらいでできますね。

>>436
 モジュール調べてたらこんなの見つけた。
>FileCache:システムの制限よりも多くのファイルをオープンします
http://www.kt.rim.or.jp/~kbk/perl5.005/perlmodlib.html#Standard_Modules
■ このスレッドは過去ログ倉庫に格納されています