トップページ⇒php
988コメント342KB

CGIに依存しないPerlの話題一般

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。2001/05/31(木) 21:49ID:bKRSBFew
・コマンドラインからのPerl活用
・モジュール、オブジェクト指向プログラミング
・Perl6や.NET対応など
・各種GUIツールキット(Perl/Tk, Gtk-Perlなど)
・他言語による拡張(Inline::*, XS, Swigなど)

についてマターリと語り合うスレッドです。

#CGI関連の話題は、なるべく専用スレッドで。
0896nobodyさん02/07/21 09:28ID:???
5.8.0が出たので久しぶりに来たら不毛なことになっているな。
なんつーか以前のメンバーは何処逝ったね?
0897nobodyさん02/07/21 09:33ID:???
>>896
2chでまともな話をしようとする方が馬鹿げてると思いますがね。
貴方にとって有益でも、周りの人間から見れば低レベルで下らないことでしかない時も多いですからね。
可哀想な人だ。
0898nobodyさん02/07/21 09:34ID:???
>>897
>2chでまともな話をしようとする方が馬鹿げてると思いますがね。
反論に値しない。
0899nobodyさん02/07/21 09:35ID:???
>>897
>貴方にとって有益でも、
それでいいじゃん。自分の益になる情報が得られる。それが目的だ。
0900nobodyさん02/07/21 15:13ID:???
>>897 はただの電波だから無視しとけ.
0901nobodyさん02/07/21 16:14ID:???
>>900 無視できない人が多いんですよ。君みたいに(わら
0902nobodyさん02/07/22 08:49ID:???
>>901
がんばれよ。電波でもきっと良いことあるさ。
0903nobodyさん02/07/22 21:14ID:???
>>902
電波は常にいいことだらけかと。
不幸なのは周りかと。
0904nobodyさん02/07/25 07:03ID:???
このスレッドで再び有益な話は出来ないものか。
0905nobodyさん02/07/26 11:51ID:JxVLPbo8
空気を読まずに質問w

XSを使用してperlとCとの構造体のデータのやりとりをしたいんですが。

例えば
C側定義構造体
typedef struct data{
char aa[20];
char bb[20];
int cc;
} DATA;

というものを定義して
samp::samp1(DATA *aaa)

で受け取りたいと。
typemap T_PTROBJ

でマッピングした場合、perl側のデータの記述は
どのように行えばいいんでしょうか?

@aaa = ("11","111".1,"22","222",2);
@aaa = (["11","111".1],["22","222",2]);

この二つはためしてみてだめだったわけですが
0906nobodyさん02/07/26 11:52ID:???
すいません 質問よろしいでしょうか。。
Perlでパケットの受信及びデータ解析を勉強しているんですが、
IPヘッダの中の ある1バイトの中に3ビットと5ビットの2つのデータが
入っていて、それをビット単位で分割する方法が分からないんです。

今のところ $OneByte という変数に
その1バイトのデータを格納しているのですが。。。

どなたかご存知の方がいらっしゃいましたらご指南お願いします。
0907nobodyさん02/07/26 11:54ID:???
>>906

11100000とAND
0908nobodyさん02/07/26 11:55ID:???
>>907
ただ5ビット右シフトでいいのでは?
0909age02/07/26 12:25ID:???
>>905
0910nobodyさん02/07/26 16:41ID:???
>>905
分かりづらい。
0911nobodyさん02/07/26 16:44ID:???
>>910
わからない。と書いた方が潔い。
0912nobodyさん02/07/26 17:03ID:???
>>911
君みたいな糞厨房は消えた方がいいよ。
なにを勘違いしているのかは知らないが。
俺は>905の意図することが分かりづらい、と言っている。

>samp::samp1(DATA *aaa) #これは何? CでもなしPerlでもなし。C++ならこう書けるが。
> typemap T_PTROBJ # 何をマッピングしたのか書いていない。
>@aaa = (["11","111".1],["22","222",2]); # これは何を意図しているのか。
#aaメンバに11,bbに111,ccに1が入って...ということなのか。これでうまくいくはずはないが。
0913nobodyさん02/07/26 17:10ID:???
殺伐としたスレッドですなぁ〜
0914nobodyさん02/07/26 17:14ID:???
>>913
夏休みですから。

「今年の夏の目標はCGIだ!」

で、ちょっと勉強した中学生が調子に乗って回答者のまねごとと。
0915nobodyさん02/07/26 20:26ID:???
>>1
板違い。
ム板でやれヴォケ!!
0916nobodyさん02/07/26 20:42ID:???
>>915
このスレッドが立った経緯ぐらい知っておけ阿呆。
091790602/07/26 21:07ID:???
>>907-908氏
あ なるほど。。ビットをシフトさせるんですね
全然思いつきませんでした。。(汗

昨日からずっと悩んでいただけに凄く嬉しいです。
ありがとうございました。

この板には1年振りぐらいに来たんですが、
ログを見ていると以前よりも煽り、叩きがひどくなっていて
正直質問しようか迷ったんですが。。
まだまだ親切な方がいるんですね また来ます。
0918nobodyさん02/07/26 22:22ID:X9MpLpMf
>>912
ええとちゃんと書きます。ただしXSソースになりますが

091990502/07/26 22:41ID:X9MpLpMf
samp.xs
--------------------------
#include <stdio.h>
(中略)
typedef struct data{
  char aa[20];
  char bb[20];
  int cc;
} DATA;
MODULE = samp PACKAGE = samp
void
samp1(aaa)
  DATA *aaa

  CODE:
  while(0){
    //構造体のデータ処理
  }
----------[eof]-----------

typemap(データ型定義ファイル)
--------------------------
DATA *<tab>T_PTROBJ
----------[eof]-----------

ここまでがxsのソースと、perlとの受け渡しのデータ型定義です
092090502/07/26 22:41ID:X9MpLpMf
>>919の続き
test.pl
--------------------------
#/use/local/bin/perl
use samp;
#Cの(xsの)ソースに引き渡すデータを作成(仮に$aaa)

&samp1($aaa)
----------[eof]-----------

起動をかけるのはtest.plで、呼び出すのが、samp::samp1()になります。
要は、perlのソースから、Cにデータを渡して処理したいのですが、その
データを構造体で受け渡ししたいということです。そのときperl側でのデー
タの定義はどうすればよいか教えて欲しかったのです。
単に要素を配列に入れるだけでは、アンマッチが発生するようです。
0921nobodyさん02/07/26 22:57ID:???
>>919
そのwhile(0)はなんのためにあるの?
0922 ◆JAPH9PWA 02/07/27 00:03ID:???
typemapには SV <-> Cのデータ型 の変換コードを
"自分で"書かなきゃいけないんだよ。大変だけど、Perlはそこまでは面倒を見てはくれないよ。
とりあえずtypemapファイルの構文を勉強してください。
ExtUtilsディレクトリにあるデフォルトのtypemapも参考になるよ。

0923nobodyさん02/07/27 08:18ID:klNDdAyC
Perlで日付の加減などを行うモジュールに、Date::Calcがありますが、
telnetを使えないレンタルサーバで使いたいので、
同じフォルダに入れるだけで使える手軽な日付計算ライブラリないですかね?
0924nobodyさん02/07/27 20:55ID:???
Perl初心者コーナーはスレ違いらしいので、此方で質問させていただきます。。
ファイルのタイムスタンプを変更したいのですが、可能でしょうか?
0925 ◆JAPH9PWA 02/07/27 22:24ID:???
ん〜む。perl5.8.0をmingw-gccでビルドしようとしたけど、上手く行かなかったなぁ。
5.7はビルド出来たんだけど…。やっぱり無理せずActivePerlを待とう。

>>924
可能か否か、という答えが欲しいの?そりゃ可能だけど。
でも多分知りたいのは可能か否か、じゃ無くてutime()関数のことだよね。
Perl初心者スレでは、スレ違いを指摘したんじゃなくて、
その質問の仕方が悪い、ということを指摘されたんだと思うよ。
092692402/07/28 01:20ID:???
有難う御座いました。出来ました。
>その質問の仕方が悪い、ということを指摘されたんだと思うよ。
そのままの質問だったので、書かなくても解る事をだらだら書いてうざがられるよりは良いかと思ってました・・
ボキャブラリーが少なくて申し訳ないです。
0927 02/07/28 08:14ID:0sVNzuOf
すいません、文字列の MD5 を取りたいのですが、
Digest::MD5 をインストールしないでできますか?

CGI で使おうと思っているのですが、同じディレクトリに
上記に付属の MD5.pm を置いて use MD5; とか記述
するだけではできませんよね?

rfc1321 の日本語版は読んでみたのですが、全然
わかりませんでした。
0928nobodyさん02/07/28 10:16ID:???
p://zurubon.strange-x.com/uploader/md5_pl.txt
多分動く。がんがれ。
092992702/07/28 16:04ID:???
>>928
見事に MD5 コマンドと同じ結果が出ました。
有難う御座いました ヽζ゚)ノ
0930nobodyさん02/07/30 23:42ID:ZOuiEpQs
現在perlで quota の設定ができるものを作成中なのですが、
通常であればシェルで

edquota ユーザー名 (Enter)

でエディタが起動して

Disk quotas for user okada (uid xxx):
Filesystem blocks soft hard inodes soft hard
/dev/hdax xxx xxxx xxxx xx x x

上記のテンプレートを編集する事になるのですが、
これを Perl のスクリプトで変更することはできないのでしょうか?

exp) perl ./edquota.pl ユーザー名 blocks値 soft値 hard値 inodes値 soft値 hard値・・

Linux Slackware8.0
Perl5.6 を使用しております。

それでは宜しくお願いいたします。
0931nobodyさん02/08/05 22:26ID:???
>>930 http://search.cpan.org/search?dist=Quota
なんてのがあるらしい。使ったことはないけど。
0932マルチです02/08/09 23:54ID:yPKlUuWH
http://pc3.2ch.net/test/read.cgi/tech/993665608/412
↑人がいません
Perl6でのファイルの開き方がわかりません。
おしえて!
0933nobodyさん02/08/10 01:37ID:???
マジか?
そんなドラスティックな変化は望んでないんだが・・・
@arry[0]
%hash{key}
う〜ん
0934nobodyさん02/08/10 01:42ID:???
http://www.google.com/search?num=100&hl=ja&ie=UTF-8&oe=utf-8&q=PERL6+open+function&btnG=Google+%E6%A4%9C%E7%B4%A2

どのRFCが新しいのか分からん
後方互換性頼りで良いじゃん
0935nobodyさん02/08/10 01:49ID:???
エンコードでもするんなら兎も角ファイルが開けないってのはヴァカだと思われ
093693202/08/10 01:51ID:???
Perl6スレの人ってRFCとかただ記事みて議論してるだけなんですかね?
自分がいまテストしてるPerl6はParrotにふくまれてたやつで
昨日からopen関数が実行できねーよ!みたいな。
0937nobodyさん02/08/10 02:30ID:???
取り合えずその調子じゃ誰も相手してくれないんじゃない
世の中の人間はアンタの50年来の嫁じゃ無いんだから
言葉に乗せなきゃ何言いたいのか解らないよ
そんなに大変ならPERL6のMLに投げてみ
HELP PLZ!!!! ってさ
093893202/08/10 02:36ID:???
>>937
まぁ忠告は心に刻んでおくが
技術的な反論はできんのか。
093993202/08/10 02:37ID:???
>言葉に乗せなきゃ何言いたいのか解らないよ
これが俺には何を言ってるのかわからん
0940nobodyさん02/08/10 02:56ID:???
>>1 糞コテは死ね。
0941nobodyさん02/08/10 04:02ID:SdI5yvJj
ふぁいる開く時は

open FH,file;

でいいみたいだよ
がんばってね★ミ
0942nobodyさん02/08/10 04:21ID:???
ま、そうなるわな(笑
ここguzipが居なくなって廃れたなあ
みんなPerl6入れてるの?
早くParrotでスピード上げて遊びたいな
094393202/08/10 04:45ID:???
$ ./perl6 -w my5ofile.p6
"arse error [line 2]: Invalid statement near "open FH,"my4.p6";
Can't call method "tree" on an undefined value at ./perl6 line 183.
============================================================
[my5ofile.p6]
sub main(){
open FH,"my4.p6";
print "ujgh\n";
}
0944_gunzip02/08/10 05:21ID:???
Perl6では、ファイルを開く際は、
my $fh = open $path : mode => 'r' or die "Can't open";
とします。

parrot-latest(8/9現在)では、open関数は"not yet implmented"です。
094593202/08/10 05:34ID:???
糞コテ師匠キタ━━━━━(゚∀゚)━━━━━!!!!
>>944
サンクス
0946nobodyさん02/08/10 15:27ID:???
なんだコイツ
死ねよお前
0947nobodyさん02/08/10 15:30ID:???
なんだコイツ
死ねよお前
0948nobodyさん02/08/10 15:43ID:???
なんだコイツ
死ねよお前
094914802/08/10 15:51ID:???
削除以来出しました。
0950nobodyさん02/08/10 16:18ID:???
Perlで"真に"グローバルな常数を作ることは出来ないのでしょうか?
常数(use constant)を別モジュールにまとめて利用しようとしたのですが、
呼び出し元ではその常数を使えますが、別に呼び出しているモジュールでは
strict subsに引っ掛かってしまいます。
no strict subsをするしか無いのでしょうか。
0951nobodyさん02/08/10 16:21ID:???
コード例を。
0952nobodyさん02/08/10 16:27ID:???
つか、そのモジュールでもuseすればよか。
0953nobodyさん02/08/10 22:43ID:M8XpcEtN
ご返答ありがとうございます。

>>951
スペース確保出来次第アップします。
今はまだアップロードできる場所ありません。

ちなみに常数モジュールでは、

package Hoge;

use strict;
use base qw(Exporter);
@Hoge::EXPORT = qw(
const1;
);

use constant const1 => 0;

1;

みたいにして、本スクリプトおよび、
そこから呼び出されるモジュールでuseして、双方で利用しています。

>>952
そのモジュールでもuseしているのですが・・・
0954nobodyさん02/08/10 23:30ID:???
試してみたが、OKだったよ。
0955 ◆JAPH9PWA 02/08/12 09:46ID:???
>>950
何か勘違いしてる予感。
それだと多分no strict 'subs'しても期待する動作はしないでしょ。

ちなみにmainパッケージで定数を定義すれば常に"::"接頭子で参照できるよ。
普通は個別にimportした方がいいけどね。

package main;
use constant TRUE => 1;
package hoge;
print ::TRUE;
0956nobodyさん02/08/12 18:48ID:???
http://search.cpan.org/
がいつの間にかリニューアルしてるのね
0957Dream ▼02/08/15 06:25ID:???
age
0958nobodyさん02/08/15 07:34ID:???
>>953
俺はそういうモジュールいつも使ってる。
Hoge.pmをuseしているファイルではどういうふうに使用してるの?
0959エロ助02/08/15 11:30ID:h1WzO6+x
http://www.kemokemo.com/ 
http://www.kemokemo.com/products/picchabo/picchabo203.lzh 
上(掲示板CGI)に下(ランダム広告CGI※呼び出しによりSSI使用しない方)を設置したいのですが『インターネットサーバーエラー』になります。(;_;)
一通りパーミッション設定などを説明どうりやってみたのですが設置できないんです。。(;_;)なぜでしょう??(;_;)
どうか教えていただけないでしょうか。。(;_;)
また呼び出しのときの記述が『require 'rand.pl';  rand::main($Op1,$Op2,$Op3);』を記述しろと書いてあったので正確に記述したのですが『インターネットサーバーエラー』になってしまうんです。。(;_;)
『$buffer』でも記述したんですがだめでした。
http://taihei.cc/pc/cgis/random.html
http://taihei.cc/pc/cgis/randban11.lzh
0960nobodyさん02/08/15 11:34ID:???
マルチは放置。                     
0961nobodyさん02/08/15 14:35ID:oToZdaAw
CPAN重くない?
全然ファイルが落ちてこない
0962nobodyさん02/08/16 12:47ID:???
しらん。
適切なミラーを使うべし。
http://www.cpan.org/SITES.html
0963nobodyさん02/08/16 18:12ID:yy/Fieut
メール送信で
my ($To,$Sub,$Name,$Value) = @_;
my $FromMailAddr = '[email protected]';
my $msg;
my $smtp;
if ($MailServerActive){
$smtp = Net::SMTP->new('192.168.2.2');
if (!$smtp){
$msg = "SMTPサーバ[$Server]との接続に失敗しました\n";
$msg = jcode($msg)->sjis;print $msg;exit;
}
$Sub = jcode($Sub)->mime_encode;
$Name = jcode($Name)->mime_encode;
$Value = jcode($Value)->jis;
$smtp->mail($FromMailAddr);
$smtp->to("$To");
$smtp->data();
$smtp->datasend("Content-Transfer-Encoding: 7bit\n");
$smtp->datasend("Content-Type: text/plain; charset=\"iso-2022-jp\"\n");
$smtp->datasend("From:\"$Name\"\n");
$smtp->datasend("To:$To\n");
$smtp->datasend("Subject:$Sub\n");
$smtp->datasend("\n");
$smtp->datasend("$Value\n");
$smtp->dataend();
$smtp->quit;
return 1;
}
return 0;

このようにしてるのになぜかjphoneのメアドで受信したときのみ
タイトルが "=?ISO-2022-JP?Bッテ感じに文字化けします・・・・ナゼでしょう?
0964nobodyさん02/08/17 13:27ID:???
漏れなら、Mail::Mailer。
0965 ◆4XfSMGTg 02/08/19 00:06ID:???
Parrotの話題でも出して見ろやカスども
0966nobodyさん02/08/19 00:09ID:???
>>965
バカで性格悪くて誰にも相手にされない寂しがりやは悲しいよね。
0967nobodyさん02/08/19 00:21ID:???
>>965
(´`c_,'` ) プッ
096896702/08/19 00:23ID:???
>>965
こっちでどうぞ
http://pc.2ch.net/test/read.cgi/php/1024741312/
0969 ◆4XfSMGTg 02/08/19 08:47ID:???
チンカスども。俺を超えて見せろよ!
http://hiero_pl.tripod.co.jp/
0970 ◆4XfSMGTg 02/08/19 23:13ID:???
何か言えよ!ああ?
0971mad-p ◆FaOqqhYM 02/08/20 01:15ID:???
>>◆4XfSMGTg
Linux Conferenceかjus勉強会でParrotについて講義してください。
おながいします。
0972nobodyさん02/08/20 01:22ID:???
>>971 「Perlの世界にようこそ」は改訂しないのですか?
0973nobodyさん02/08/20 01:30ID:???
$a = 1 << 5;
print 'HIT' if vec($a,4,1);

でHITと表示されるのはPerlでは普通なのですか?
0974nobodyさん02/08/20 05:55ID:???
当たり前です。
ネタ?それともvecのマニュアルも読めない馬鹿?
0975nobodyさん02/08/20 08:01ID:5HfNqmVJ
二つのリファレンス間の関係を得るにはどうしたらよいですか?
例えば
$a = { b => { c => { d=> { e => "f" } } } };
で、
$b = $a->{b}; $c = $a->{b}{c}{d}; とあって、
&rel($b,$c) で "{c}{d}" とか返してくれるような(表記方法は何でもいいんだけど)
0976971 ◆FaOqqhYM 02/08/20 08:03ID:???
>>972
Perl5についてはエラータだけ直してます。
Perl6の本を書きたい人、編集さんを紹介してあげます(笑)。
0977nobodyさん02/08/20 11:56ID:???
>>971
本物っていう証拠がゼロだからな、、、、
それと◆4XfSMGTgはオープントリップ#kusokote
だから。
0978nobodyさん02/08/20 12:04ID:???
お前らみんな死ね
0979mad-p ◆FaOqqhYM 02/08/21 00:10ID:???
オープントリップってものがあったのか……。
ガクーリだよ。

しかし、Parrotを実際にコンパイルしてる人に
例会でも会ったことないので、正直どんな感じか教えてホスイ。

>>936
図星です。すんまそん。
おいらは勉強会とかでえらそうなこと言ってるけど、
ApoとExe(とRFCとperl6-language)あたりから知識得てるだけなんで。
0980nobodyさん02/08/21 00:22ID:???
なんだかなぁ〜本物っていう確証がないのがアレだが
オープントリップって言うのは適当に考えたもんだから気にしないでいい
cygwinがありゃコンパイルはできるはずなんだがなぁ〜。

==perl初心者コ−ナーpart14のメモ
*.p6 //perl6 のコード ->parrot/languages/perl6/perl6[perlスクリプト] 使用
*.colac //C#っぽい ->parrot/languages/cola/colacc.exe 使用
*.imc //.,,pasmとなにが違うの? ->parrot/languages/imcc/imcc.exe 使用
*.pasm //、、、アセンブラ? ->parrot/assemble.pl 使用
*.pbc //perl byte Code ->parrot/parrot.exe 使用

0981メモ02/08/21 00:25ID:???
[colac の流れ]
./colacc.exe kusokote.colac =>a.imc
./imcc.exe a.imc =>a.pasm
./assemble.pl a.pasm => a.pbc
./parrot.exe a.pbc [実行]

[perl6 の流れ]
./perl6 test.p6 ->test.imc test.pasm test.pbc 生成 ->test.pbc [実行]

*assemble.pl自体はXSとかつかったPerlスクリプトでないのでActivePerlでも実行できた(はず)
perl6もActivePerlで動きそうだけどまぁ試したときは動かんかった。
(コンパイルしたオブジェクトコード参照してる?)
まぁassemble.plが動けばparrot.exeを試すことぐらいはできるはず。
0982nobodyさん02/08/21 00:48ID:???
また変なコテ半が出てきやがったな。
ホント、ゴキブリみたいだな(大爆笑)
0983nobodyさん02/08/21 02:18ID:oahOU1tj
暗号強度とかは問わないのですが、\w* でマッチするような文字列を簡単な
暗号化(ぱっと見無意味な文字の羅列に見える程度でOK)して、
別のサーバーで復号化するようなスクリプトってかけますかねぇ?
できれば、日時かなにかを暗号キーにして、1時間程度時間が経過すると
その文字列が無効になるような感じがよいのですが・・・

時間はntpdである程度シンクロしていて、多少のずれているときはあきらめるとして。
0984nobodyさん02/08/22 14:05ID:ZyNFWurg
>>983
tr/a-zA-Z/Za-zA-Y/ とかやって、1時間毎に Za-zA-Y 部分ずらす、とか。
そのオフセット・有効時間ともに保存しておく、とか。
0985nobodyさん02/08/22 14:30ID:???
>>984
シーザーの暗号ですな。
098698302/08/23 00:12ID:???
おぉぉ、なるほど、面白そうですね。試してみよー。(^^)

でも、ずらすのって、
%word(00,"Za-zA-Y"
,01,"YZa-zA-X"
,02,"X-Za-zA-W"
,03,"W-Za-zA-V"
,04,"V-Za-zA-U");
tr/a-zA-Z/$word{$time}/;

こんな感じですかね、、24パターンくらいなら大丈夫かな?
0987mad-p ◆FaOqqhYM 02/08/23 13:36ID:DBSoD3F/
>>986
tr///の変換リストには変数展開が使えないので、eval使ってね。
0988名無しさん@Meadow02/08/23 14:15ID:???
>>983
Crypt::OTP
レス数が950を超えています。1000を超えると書き込みができなくなります。