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

くだすれPerl(超初心者用)3

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2009/03/31(火) 22:20:27ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Perl使いが優しくコメントを返しますが、
お礼はPerlの布教と初心者の救済をお願いします。

前スレ
くだすれPerl(超初心者用)2
http://pc11.2ch.net/test/read.cgi/php/1204488452/

関連スレ
Perlについての質問箱 39箱目
http://pc12.2ch.net/test/read.cgi/tech/1234181856/
Perlコーディング初心者質問スレ Part 59
http://pc11.2ch.net/test/read.cgi/php/1234752149/
【Perl上級者コーナーPart01】
http://pc11.2ch.net/test/read.cgi/php/1024741312/
0847nobodyさん2010/04/25(日) 15:52:42ID:???
>>846

おれも失ったんだよ。
つーか、失うものを持っていなかったわけだが。
0848nobodyさん2010/04/26(月) 21:53:59ID:???
>>844
友人や愛の維持にはある程度のお金はかかるものだが
普通は友人や愛をお金で買うことはできない。
もし>>844さんが買えてるとしたら相手はゲイじゃねえの。
0849nobodyさん2010/04/26(月) 21:57:06ID:???
いい加減スレ違いだから
0850nobodyさん2010/04/27(火) 01:26:44ID:???
だれがうまいこと言えと
0851nobodyさん2010/05/07(金) 22:36:42ID:gfyxirvM
int ( rand (5 - $rei / 5) )

$reiに0が入る時の結果は0〜4
1〜5が入る時には0〜3
6〜10が入る時には0〜2
であっているでしょうか?
0852nobodyさん2010/05/07(金) 23:44:25ID:???
>>851
合ってないんじゃないでしょうか。
08538512010/05/08(土) 00:48:20ID:???
どの箇所が間違っているのでしょうか?
$reiに0、5、10以外の数値が入って割り切れない数値の時には
3.8や3.6などの数値がINTによって小数点以下が切り捨てられるので
前記のようになるかと思ったのですが、思い違いでしょうか
0854nobodyさん2010/05/08(土) 02:11:23ID:???
5−0÷5=rand(5.0)=0〜4.99→int→0〜4
5−1÷5=rand(4.8)=0〜4.79→int→0〜4
5−2÷5=rand(4.6)=0〜4.59→int→0〜4
5−3÷5=rand(4.4)=0〜4.39→int→0〜4
5−4÷5=rand(4.2)=0〜4.19→int→0〜4
5−5÷5=rand(4.0)=0〜3.99→int→0〜3
5−6÷5=rand(3.8)=0〜3.79→int→0〜3
・・・
0855nobodyさん2010/05/08(土) 03:10:16ID:???
ようやく分かりました
知ったはずの順序を無視して脳内で妙な処理をしてました
ご丁寧にありがとうございました
0856nobodyさん2010/05/08(土) 05:29:33ID:???
>>855
問題はそれだけじゃないよ
数値が変わると返ってくる数値の期待値も変わるし
多分意図してない動作だと思うから忠告しとく

perl -e 'for(0..100000){ $tmp{int rand(5 - 4 / 5 )}++; } print "$_: $tmp{$_}\n" for sort keys %tmp'
0: 23773
1: 23960
2: 23832
3: 23657
4: 4779
0857nobodyさん2010/05/08(土) 07:04:06ID:???
忠告(笑)
0858nobodyさん2010/05/08(土) 14:53:25ID:???
彼の場合はプログラミング云々より算数の問題だっていうねw
0859nobodyさん2010/05/08(土) 23:40:53ID:???
たとえば、以下のようなアドレスにアクセスすると、

ttp://****/hoge.cgi?uho.jpeg

hoge.cgiではなくuho.jpegに直接アクセスするというものを見かけますが、
これはどういう仕組みなのでしょうか?
サンプルを公開しているサイトなど教えていただければ幸いです
0860nobodyさん2010/05/08(土) 23:42:53ID:???
そのjpgを読み込んでprintしてるだけだろ
0861nobodyさん2010/05/08(土) 23:55:29ID:???
いや、なんか言ってる意味がいまいちつかめないぞ・・・
直接アクセス? uho.jp を表示しようと hoge.cgi を通してる時点で直接ではないよ?

もっと落ち着いて言葉を選んで質問を書いてみてはいかがだろうか?
0862nobodyさん2010/05/08(土) 23:55:48ID:???
もすくは単にrewriteしてるだけか
0863nobodyさん2010/05/09(日) 00:22:07ID:???
妙な質問しかこない
0864nobodyさん2010/05/09(日) 00:46:41ID:???
そうか?分かる質問だと思うけどな

ロケーションヘッダーでググれ
0865nobodyさん2010/05/09(日) 01:30:14ID:???
CGI なのに画像を表示というのであれば

mod_rewrite (サーバーの設定確認が必要)
単なるリダイレクト
jpg を読んで print
html を出力して img で表示してるだけ

どれか好きな方法で良いかと
0866nobodyさん2010/05/09(日) 01:50:15ID:???
仕組みはもう挙がってるけど hoge.cgi はダウンロードカウンタ辺りかな。
0867nobodyさん2010/05/09(日) 04:21:34ID:???
やり方なんかいくらでもあるだろ
0868nobodyさん2010/05/27(木) 00:59:35ID:???
すいません。perl初心者ですが、URL自動リンクについて教えて下さい。

現在日本語を含むURLの場合、リンクが自動で貼ることができなく困っています。
例:http://hoge.com/~foo/にほん語.txt ←http://hoge.com/~foo/までしかリンクがされません。
パーセントエンコード?をすればリンクされるようですが、そうすると表示が↓
http://hoge.com/~foo/%82%c9%82%d9%82%f1%8c%ea.txt
のようになってしまい、見た目で何がリンクされているのかが分からなくなります。

これを何とか自動でできるようにしたいのですがどうすればいいでしょうか?
$string =~ s/([^=^\"]|^)((http|ftp):[!#-9\?=A-~]+)/$1<a href=$2 target=_blank>$2<\/a>/g;
または、ヒントがあるHPがあれば教えて下さい。
よろしくお願いします。
0869nobodyさん2010/05/27(木) 01:03:07ID:???
URLに日本語は使用できない
0870nobodyさん2010/05/27(木) 01:24:27ID:???
見た目だけならhrefの値だけを%符号化してやればいい
0871nobodyさん2010/05/27(木) 22:38:08ID:???
% perl -MURI::Escape -MFile::Basename -le 'print +( dirname $ARGV[0] ). q{/} . +( uri_escape basename $ARGV[0] )' ttp://ja.wikipedia.org/wiki/リヒャルト・ワーグナー
ttp://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%92%E3%83%A3%E3%83%AB%E3%83%88%E3%83%BB%E3%83%AF%E3%83%BC%E3%82%B0%E3%83%8A%E3%83%BC
# @UTF8環境
0872nobodyさん2010/05/28(金) 19:54:25ID:BUacjjtF
ファイル入出力に関する質問なのですが、
常に最初に文字列が出力される様にするには
どうすればよいのでしょうか?
 -------------
 あいうえお
 -------------
という内容のファイルがあるとしたら
 -------------
 さしすせそ
 かきくけこ
 あいうえお
 -------------
のように、逆順で書き込むには
どうすればいいんでしょうか?
0873nobodyさん2010/05/28(金) 20:54:39ID:???
新しい内容を出力してから、以前のデータを出力
0874nobodyさん2010/05/28(金) 21:21:29ID:???
@fooの中にテキストの中身が入っていると仮定すると
print FH reverse @foo;
でいいでしょう。
0875nobodyさん2010/05/28(金) 21:25:57ID:YjM9qGIs
( 0 == int(rand($i)) )

$i の数値が0.1でも小さいほど真になる確率が上がるという認識で合っているでしょうか?
0876nobodyさん2010/05/28(金) 21:30:07ID:???
$iが0.1だとこれは常に偽を返すだろ
つまり$iが0.1だとこの条件式は常に真
0877nobodyさん2010/05/28(金) 21:36:29ID:YjM9qGIs
すみません、質問の仕方が悪かったようです
3よりも2.9や2.8、4よりも3.9や3.8である時の方が0(真)になる確率が上がるのでしょうか?という質問でした
0878nobodyさん2010/05/28(金) 21:46:28ID:???
1.0未満になる確率が相対的に上がりますからそうでしょうね
0879nobodyさん2010/05/28(金) 21:49:12ID:???
(!int(rand($i)))
普通はこう書くけどね
まあ確率は上がるんじゃないかな
0880nobodyさん2010/05/28(金) 21:56:22ID:???
my %result;
for (2.9, 2.7, 2.5, 2.3, 2.1) {
my $i = $_;
for (0..100000) { $result{$i}++ if !int(rand($i)) }
printf "%.1f: %d\n", $i, $result{$i};
}

割りとはっきり変わるね。
08818752010/05/28(金) 22:30:10ID:???
>>878-880
ありがとうございました
0882nobodyさん2010/05/29(土) 14:20:04ID:???
>>874
ありがとうございました!!完璧でした!
心からお礼を言いたいです。

>>873さんもありがとうございました!
0883nobodyさん2010/06/07(月) 09:42:41ID:???
初めて5版から続初めて改訂版って問題ない?
そのあとマスタリングへ進む予定なのだけれど、初めて5版(2009)と続初めて改訂版(2006)は間に3年の差がある。
Versionの差が大丈夫なのかと気になっています
0884nobodyさん2010/06/07(月) 17:34:29ID:???
formとかinputとかから他のファイルから読み込んだり書き出したりしているのですが
その決まった行だけ呼び出して、決まった行だけ上書きするにはどうしたらいいのでしょうか?
決まった行だけ呼び出すのはできましたがそこから上書きするとその行以外が空白になってしまいます
0885nobodyさん2010/06/07(月) 18:19:14ID:???
>>884
決まった行以外も読み込んで書き出すか、DB使ってください。
1行のデータ量が固定長ならseekを使う手もありますが、正直お勧めしません。

>>883
2006年版なら問題ないです。
0886nobodyさん2010/06/09(水) 01:38:21ID:???
>>885
大丈夫なんですね。
初めて5版はperl5.10に対応したよんって書いてあったので、
その前に出された続初めて改訂版では5.10とそれ以前での変更された仕様で躓かないかと心配していました。
0887nobodyさん2010/06/10(木) 04:26:17ID:???
2006年というと既にPerl5.8になって4年が経過してるな。
5.8.8と5.10.0の間で、互換性が保てなくなるほど大きな仕様変更はあまり無い。
どうしても心配ならここを読んでおけば大丈夫だよ。
http://fleur.hio.jp/perldoc/mix/pod/perl5100delta.mix.html
0888nobodyさん2010/06/14(月) 14:15:33ID:uA0hCtuD
ブラウザ(ユーザエージェント)が飛ばしてきたHTTPリクエスト情報を
Perl 5.8.8で取得するにはどうすればよいでしょうか?
0889nobodyさん2010/06/14(月) 15:20:22ID:???
use CGI;

for my $name ($CGI->param) {
   print "$name = $CGI->param($name)\n";
}
0890nobodyさん2010/06/14(月) 16:19:19ID:???
多分だけど HTTP リクエスト ヘッダを取得したいんじゃないかなと思った
0891nobodyさん2010/06/14(月) 18:51:04ID:???
$ENV{USER_AGENT}
0892nobodyさん2010/06/18(金) 17:00:02ID:???
画像をうpするためのcgiがありまして
それからフォルダ内に出力された画像全てのサムネイルを
自動的に別フォルダへ生成されるようにしたいと考えています。

ImageMagickというのを使えばいい、という所までは解りましたが
どうするのがよいのでしょうか?
ttp://www.aimix.jp/cgi/accimagemagicksz.html
ここのとかをみて試してみましたが
画像サイズは変わってもInternal server errorがでたりとかでちんぷんかんぷんです
0893nobodyさん2010/06/18(金) 17:02:17ID:???
GDだろ
0894nobodyさん2010/06/18(金) 17:03:15ID:???
エスパーじゃなくてごめんネ
だから、ばれたらまずい部分を伏せたエラーログをよろしく
0895nobodyさん2010/06/18(金) 17:09:14ID:???
そういやWindowsのImageMagicって他にアプリのインストールが必要だったよね?

そんなトコな気がしてきた
0896nobodyさん2010/06/18(金) 17:38:32ID:???
いちおう

サムネイル作るならResizeじゃなくてThumbnail使った方がいいよ
0897nobodyさん2010/06/22(火) 00:14:54ID:???
教えて下さい。
100行ほどのテキストデータ($textdata)で、ある文字が含まれていたら行を削除
するようにはどのように処理をすればいいでしょうか?

データ形式は以下のとおりです。

あああ 20100622 00:05 いか 001 002 003 004
いいい 20100622 00:05 たこ 001 002 003 004
ううう 20100622 00:05 かに 001 002 003 004
・・・(100行)・・・

よろしくおねがいします。
0898nobodyさん2010/06/22(火) 01:08:27ID:???
ワンライナーで出来そうだけど、愚直に。

my @lines = split("\n", $textdata);
$textdata = '';
for my $line (@lines) {
  unless ($line =~ m/ある文字/) {
    $textdata .= $line . "\n";
  }
}
0899nobodyさん2010/06/22(火) 02:58:09ID:???
$textdata =~ s/.*ある文字.*\n//mg;
0900nobodyさん2010/06/29(火) 12:10:40ID:???
HTMLページに半角数字のみ入力できるフォームを作成して、入力された値によって処理を分けようと思い

#フォームからデータを受け取る
read(STDIN, $date, $ENV{'CONTENT_LENGTH'});

#データを分解して$valに格納
($name,$val) = split(/=/, $date);

#空白の場合はエラーページへ
if($val eq ''){
print "LOCATION: error.html\n\n";
}
#55555の場合はTOPページへ
elsif($val eq "55555"){
print "LOCATION: ../../index.html\n\n";
}
else{
print "<html>\n";
print "<head><title>入力</title></head>\n";
print "<body>\n";


print "<p>入力されたメッセージは $val です。</p>\n";

print "</body>\n";
print "</html>\n";

エラーページとTOPページへ飛ばす処理は単体では動作したのですが、if〜とすると500エラーになります
どこがおかしいか教えて下さい
宜しくお願いします
09019002010/06/29(火) 14:35:51ID:???
すみません、自己解決しましたorz

print "Content-Type: text/html\n\n";
が抜けていただけでした・・・失礼しました
09028972010/07/01(木) 21:44:57ID:???
>>898-899
OCN規制で書き込めませんでした。

バッチリ動作しました。
ありがとうございました。
0903nobodyさん2010/07/02(金) 10:33:45ID:???
プログラミング全くのド素人で、html若干触れるくらいの俺に導入から優しく教えてくれるサイトなどないだろうか
初めてのPerl5版、って買ったんだけど、
サブルーチンがどうとか関数がどうとかループだ配列だってそっからまったく分からんのです
0904nobodyさん2010/07/02(金) 14:35:29ID:???
>>903
その本持ってるけど、かなり判りやすかったよ。
巻末の練習問題の解答を打ち込んで試さないと理解しにくいかも。
0905nobodyさん2010/07/03(土) 20:35:04ID:???
chomp演算子の使い方がわかりません
本には、改行文字を削除します と書いてあったのですが
改行文字を削除したから何が変わるのかわかりません
こんなバカでもわかるように説明できませんか?
0906nobodyさん2010/07/03(土) 20:41:02ID:???
変数の最後の改行を消す
テキストエディタとかでよく見るエンターの記号の奴を消すってこと
0907nobodyさん2010/07/03(土) 21:22:41ID:???
例えば

my $data = "A[TAB]B[TAB]C[TAB]D[CRLF]";

っていうデータがあったとして、

my @array = split(/\t/, $data);

としたとします。
んで、

if($array[3] eq 'D'){
  〜ほにゃらら〜
}

という処理をした場合、$array[3] は D[CRLF] っていうデータなので $array[3] は TRUE にはなりません。

ほら、改行があると面倒くさいでしょ?
だから chomp で改行を切り落とすってワケです。
0908nobodyさん2010/07/04(日) 09:17:10ID:???
>>906-7
やっと理解できました!
ありがとうごさいます。
0909nobodyさん2010/07/12(月) 13:20:02ID:???
perlをはじめようとvimをダウンロードしてTutorialというトレーニングはじめたんですが、
:q! で終了したあとの指示で
「 シェルプロンプトが出てきたら、このチュートリアルを始める為ににコマンドをタイプします。」 (vimtutorと打てと書いてあります)
と書いてああるのですが、なにも出てきません
なにがいけないのでしょう

win viata 32 版です

0910nobodyさん2010/07/12(月) 17:13:52ID:???
たぶん事前作業が足りないので、ググるか、↓で聞いて

vim Part3 - ソフトウェア板@2ch
http://pc12.2ch.net/test/read.cgi/software/1224769266/
0911nobodyさん2010/07/12(月) 17:52:08ID:???
超ありがとう!
まだ足りない準備があったのか
0912最強2010/07/12(月) 19:11:22ID:OYobocmN
ラクダ本のサンプルコードをダウンロード出来る場所が
http://oreilly.com/catalog/pperl3
↑と書いてあったんだけど

URL飛んでもサンプルコードがダウンロード出来る場所ないんだけど
どこで手に入れるの?サンプルコードおしえて
0913最強2010/07/12(月) 19:16:06ID:OYobocmN
解決した^^b
0914nobodyさん2010/07/29(木) 19:44:51ID:CAEHWe/l
人が作ったCGIをいじってるのですが、ソケット通信がうまくいきません。

use Socket;
use FileHandle;

my $id = 'test';
my $line;
my $host = "www.hogehoge.com";
my $port = "80";
my $iaddr = inet_aton("$host") or die "connection failed.";
my $sock_addr = pack_sockaddr_in($port, $iaddr);

socket(SOCKET, PF_INET, SOCK_STREAM, 0);
connect(SOCKET, $sock_addr) or die "connectError";
select SOCKET;
$|=1;
select(STDOUT);
print SOCKET "GET /hoge.php?id=$id HTTP/1.1";
print SOCKET "Host:$host";
shutdown(SOCKET, 1);
while($line = <SOCKET>){
print $line;
}

close SOCKET;

てな感じでGETしてるんだけど、何も送信されていないっぽい。
色々調べてるとHTTP/1.1のあとに本来は\r\nで改行を入れた方がいいみたいなんだけど、
入れるとなぜかBad Requestが返ってきます。\nのみにした場合も同じ。

送信できないのはまた別の原因かもしれないのですが、Perl自体不慣れなものでよくわからなくて・・・
原因の可能性がわかる方いたら、お願いします。
0915nobodyさん2010/07/29(木) 20:24:47ID:???
いまどきLWPじゃないとかww
0916nobodyさん2010/07/29(木) 20:27:24ID:???
print SOCKET 〜

行末に改行が無いだけと思うよ
0917nobodyさん2010/07/29(木) 20:28:05ID:???
途中だった


改行が無いから

print SOCKET "GET /hoge.php?id=$id HTTP/1.1Host:$host";

になっちゃってる
0918nobodyさん2010/07/29(木) 20:42:17ID:???
print SOCKET "GET /hoge.php?id=$id HTTP/1.1\r\n";
print SOCKET "Host:$host\r\n";
print SOCKET "\r\n";

最後に空行が必要<HTTP
0919nobodyさん2010/07/29(木) 21:54:27ID:???
>>916-918
>>914の後ろの方にも書いたのですが改行を入れると400 BadRequestが返ってきます。。
0920nobodyさん2010/07/29(木) 21:58:33ID:???
>>914
つかまずその通信は外に出てるのか?
fwで弾かれてるとか愉快なことは無いよな?
0921nobodyさん2010/07/29(木) 23:22:36ID:???
400返ってきてるんだからdropはされてないだろ

ちゃんと198を読んだか?最後は改行2つだぞksg
0922nobodyさん2010/07/30(金) 00:03:00ID:???
use Socket;
use FileHandle;

my $id = 'test';
my $line;
my $host = "www.google.co.jp";
my $port = "80";
my $iaddr = inet_aton("$host") or die "connection failed.";
my $sock_addr = pack_sockaddr_in($port, $iaddr);

socket(SOCKET, PF_INET, SOCK_STREAM, 0);
connect(SOCKET, $sock_addr) or die "connectError";
select SOCKET;
binmode SOCKET; ← 改行コードの内部変換を考えるのが面倒なのでこれで逃げる $/ を設定してもいいかも。  それか \x0D\x0A で改行させるとかとか
$|=1;
select(STDOUT);
print SOCKET "GET / HTTP/1.1\r\n";
print SOCKET "Host:$host\r\n";
print SOCKET "\r\n";
shutdown(SOCKET, 1);
while($line = <SOCKET>){
print $line;
}

close SOCKET;


これで受信完了
0923PHPヲタ2010/08/05(木) 16:57:35ID:lfryc7FA
いwwwwwwwまwwwwwwどwwwwwwwきwwwwwwwwwww
LWPじゃないとかwwwwwwwwwふるっwwwwwwwwwwwwww
0924nobodyさん2010/08/13(金) 03:38:13ID:VdoCI/2s
とある掲示板のスクリプト中にテストで
print "$ENV{'HTTP_USER_AGENT'}¥n";
書いてみると、クライアント情報でなく長い桁の数字が
表示されます。
正しく取得できていません。他の環境変数は大丈夫だし、
試しにそれだけのperlを書いてcgi設置してみると
動作しています。

なぜなんでしょうか?
0925nobodyさん2010/08/13(金) 12:51:32ID:???
「とある掲示板のスクリプト」が何者かわからんので答えようが無いです。
初っ端で別の変数に入れてから表示してみては?
0926nobodyさん2010/08/13(金) 13:40:24ID:v7edkYYK
閲覧した端末とか、とあるスクリプトが何なのか (伏せる必要無いかと思うよ) を
書いてくれなきゃ分かりませんよん。
0927nobodyさん2010/08/13(金) 14:48:00ID:???
アクセスした端末はMac2機種,win1機種
書いたスクリプトは ここのこれです
http://cgi-design.net/prog/bbs/bbs39/index.htm

#!/usr/bin/perl
そのあとに
$brows = $ENV{'HTTP_USER_AGENT'};
として、あとで表示させてみるのですが
本来
「Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; ja-JP-mac」
となるべきなのに
「18446744073709551615」と表示されます。

もちろんこの変数は使ってませんし、htm中に直接書いても同じ。
0928nobodyさん2010/08/13(金) 15:22:23ID:v7edkYYK
ダウンロードして、#! の行の後に $brows 〜 の行を書いて、
print "</center></body></html>\n";
の直前で表示させたけど、ちゃんと表示されますよ。


あと、strict でないスクリプトなので使わないほうがいいかも
サーバーのエラーログが肥大化する原因なので・・・
0929nobodyさん2010/08/13(金) 15:25:00ID:v7edkYYK
気になったのでエラーログ見てみた
1回の実行で1131件のエラー発生してる

strict してみるとエラーが多すぎるのか固まるまであるw
0930nobodyさん2010/08/13(金) 15:31:11ID:???
レガシーよのう
0931nobodyさん2010/08/13(金) 17:19:56ID:???
失礼しました。スクリプト中のOsごとのスタイルシート振り分けが
影響していたようです。
検証有り難うございました。

確かにレガシーですが、永遠の日曜Web管理人の私などには
分かりやすいのです。
ただ、tableが多いのにサブルーチンで使い回ししまくりなので、
何処で閉じてるのかもう何がなんだか分かり難いのが最大の難点です。
0932☆忍者Perl☆ ◆M5ZWRnXOj6 2010/08/13(金) 17:27:14ID:LkLBXJmk
マカーがWeb系言語をやるのは運命wwwww

寄生虫のように脳味噌を取り付かれて、一定時期になったらweb言語をやりだすという

ハリガネムシに寄生されたカマキリみたいだねwwwwwwwwwwwww
0933nobodyさん2010/08/13(金) 17:29:06ID:v7edkYYK
日本語でおk
0934nobodyさん2010/08/14(土) 02:35:01ID:???
>>931
結局わかり辛いんじゃないのか・・・?
0935nobodyさん2010/08/14(土) 05:33:34ID:???
OOPで綺麗に書きなおせば
見辛いコードは保守性もないし
0936nobodyさん2010/08/19(木) 00:49:02ID:???
>>935
素人がOOPやっても保守しやすくなるとは限らん罠
それより先にやるべきことがある

一番やるべきなのはビューの分離
0937nobodyさん2010/08/19(木) 15:22:08ID:md+Wq55Q
CPANが使えない環境でMCryptをインストールしたくて、
winでダウンロードしたMCryptをlinuxにコピー。

makeすると
mcrypt.h: No such file or directory
といわれてしまいます。

google先生に聞いてもphpの例しか出てこず、、、
どういうことなんでしょうか?
0938nobodyさん2010/08/19(木) 16:19:15ID:???
libmcryptを入れればいいんじゃないかな
09399372010/08/19(木) 16:46:41ID:md+Wq55Q
>938

ありがとうございます。

今度はRPMパッケージのlibmcryptをインストール中にこけました。
error: Failed dependencied:
libmcrypt = 2.4.11 is needed by libmcrypt-devel-2.4.11-2.i586

調べてみます。
0940nobodyさん2010/08/19(木) 17:08:32ID:W8mNHQ1m
libmcrypt-devel-2.4.11-2.i586 が必要ってこと
0941nobodyさん2010/08/26(木) 16:54:36ID:???
こんな感じで ハッシュをソートするとします
foreach $no (sort keys %hash){ ・・・

$no の小さい順になるんで逆転したいのですが
どうしたらいいですか?
0942nobodyさん2010/08/26(木) 17:24:53ID:2u47Mbsa
reverse sort keys(%hash)
0943nobodyさん2010/08/26(木) 17:51:44ID:???
sort { $b <=> $a } keys %hash
sort { $b cmp $a } keys %hash
0944nobodyさん2010/08/26(木) 19:02:28ID:???
10abc
100abc
20abc

こうゆうデータがあるとき、先頭の数字で並べ替えたい時
どうやってソートしますか?
普通にソートすると

100abc
10abc
20abc

となりますが、希望する並べ替えは

10abc
20abc
100abc

です。
先頭の数字の配列と、文字列の配列に分断して並べ替えるのが妥当なのかな?と思ったけど、
分断した配列同士をどうやって紐付けるかで迷い、結局構造体っぽいハッシュにがっつり入れて並べ替えて対処してます。

もっとスマートに出来そうなのですが・・・
0945nobodyさん2010/08/26(木) 19:51:42ID:???
ソートに使う数字が先頭にある場合に限れば
 sort { int $a <=> int $b } @array
でいけるな。真っ当にやるなら
 sort { ($a =~ /^([0-9]+)/)[0] <=> ($b =~ /^([0-9]+)/)[0] } @array
とか。
0946nobodyさん2010/08/26(木) 20:00:51ID:???
あ〜、int は数字以外が来たらそこまであった数字を処理対象とするんでしたっけ?
恐ろしく簡単で、灯台もと暗しすぎて笑えてきたw

正規表現は意外とコストが高いので、int 使っていこうと思います。
thx!
レス数が900を超えています。1000を超えると表示できなくなるよ。