Perlについての質問箱 65箱目 (112レス)
1-

1: 2021/03/27(土)23:52 ID:vQS/WYw3(1/2) AAS
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: 2ch板:php

このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
荒らしはスルー推奨。

"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。

www.perl.org/get.html
Download Latest Stable Source (5.32.1)

▼前スレ
Perlについての質問箱 62箱目
2chスレ:tech
Perlについての質問箱 63箱目
2chスレ:tech
Perlについての質問箱 64箱目
2chスレ:tech
83: 2022/04/24(日)18:45 ID:5imQEA1W(1) AAS
>>79
亀だが外から見えるまとまった発表はないな。Steering Council もそれに気付いたから近々ブログ記事も出すと言ってる
外部リンク:markmail.org

まあ Perl 7 の変更点だった strict / warnings / feature 'signatures' のデフォルト有効化と
feature qw/indirect multidimentional bareword_filehandles/ のデフォルト無効化は use feature ':5.36' に全部入ったから use v5.36 すれば実質 Perl 7 だ
84
(2): 2022/08/11(木)23:25 ID:LJKUJJ+3(1) AAS
perlファイルに書かれている1行目の記述(#!/usr/local/bin/perl等)を変更せずに、
apacheでperlの参照先を変えたい(出来ればvirtualhost毎)のですが、やり方分かる方ませんか?
85
(1): 2022/08/11(木)23:37 ID:/k5aJ7yS(1) AAS
それOSの力を借りないと無理なのでは?ApacheやPerlの問題ではないと思うが。

自分で /usr/local/bin/perl というスクリプトを作ってしまってそこで切り替えるみたいな誤魔化しで良いなら楽だと思うが。
86: 2022/08/14(日)20:49 ID:kr4fb0g+(1) AAS
>>85
OSはUbuntu 20.04.4 LTS を使っています。
何か方法はないでしょうか?
87
(1): 2022/08/14(日)21:03 ID:pSnWmvh5(1) AAS
shebangを無視してファイルを実行するようなApacheモジュールを組み込んだらできるかも?
そんなモジュールはきっと存在しないので、自作が前提だけど。w
88: 2022/08/20(土)02:15 ID:GHxw2S4o(1) AAS
>>87
shebangを使って出来るか試して見ますね
89: 2022/08/23(火)18:46 ID:gaXbg1Nc(1) AAS
Perlに限った話じゃないんだが、WSL1でubuntu 22.04を使うとWSL1上でgzipバイナリが動かないせいで、tar.gz関連処理が軒並みエラーになってしまう
cpanでモジュールをダウンロードするとtar.gzの展開に失敗するのでなにもインストールできない
解決するには、gzipのソースをgnu公式からダウンロードしてビルド&インストールしてWSL1で動くgzipにパスが通るようにする必要がある
90: 2022/08/24(水)00:32 ID:Ww6nM5wc(1) AAS
>>84
試してないが mod_actions 噛ませば良いんでない?

AddHandler my-perl-script .pl
AddHandler cgi-script .cgi
Action my-perl-script /cgi-bin/run-my-perl.cgi

とかやって run-my-perl.cgi は

#!/bin/sh
/path/to/your/perl $PATH_TRANSLATED

みたいな
91: 2022/08/25(木)15:27 ID:bJn+zm7R(1) AAS
宇宙刑事 shebang
92: 2022/08/26(金)18:50 ID:NQ4mbOjq(1) AAS
>>84
Would you like

#!/usr/bin/env perl
or
/your_favorite_perl_path perl_script
93: 2022/08/26(金)20:12 ID:fCaJRqVr(1) AAS
きまぐれでどれが呼ばれるか判らんものをよく使おうと思えるな
94
(1): 2022/08/26(金)20:37 ID:KXcMIUBJ(1) AAS
gzはwin同梱のtarには付いて無いんか?
95: 2022/08/28(日)05:40 ID:vrDCS1ZD(1/3) AAS
>>94
PATH の通ったディレクトリに Windows 用の xz.exe を置いておくと tar の J オプションで展開してくれるようだが圧縮は対応していない模様。
圧縮は自分でパイプ通してやらないとできないみたい。何故そうなっているかは不明。
96: 2022/08/28(日)05:40 ID:vrDCS1ZD(2/3) AAS
あ、gz か。ごめん。xz と間違えた。
97: 2022/08/28(日)05:42 ID:vrDCS1ZD(3/3) AAS
あれ?でも gz (gzip) 圧縮なら tar cvfz でできたな。
98: 2022/12/23(金)15:18 ID:yhR2datD(1) AAS
perlに付属されているh2xsというツールを使ってモジュールを作成したいんですが、ディレクトリに移動に移動してコードを書く方法が分かりませんアドバイスお願いします。

※Perl
外部リンク:linuxcommand.net
99
(1): 2023/06/07(水)16:24 ID:ywJ2sk66(1/2) AAS
Perlのpackage内my変数についてちょっと疑問。
myはレキシカルな局所変数なので、他package内のmy変数は他のpackageからは参照できず、参照したければmy出なくourにすると解釈していたが。
packageが別々のソースファイルだった場合はその通りですっきりしたスコープ仕様だと思っていたが…
ところが二つのpackageが同じソースファイル内にあり、他のpackageのmy変数を参照すると変な感じ:


use strict;
use warnings;

package P1;
our $aa = __PACKAGE__.'aa';
my $bb = __PACKAGE__.'bb';

package P2;
print __PACKAGE__ . "(1)$P1::aa\n";
print __PACKAGE__ . "(2)$aa\n";
print __PACKAGE__ . "(3)$P1::bb\n";
print __PACKAGE__ . "(4)$bb\n";

実行結果
$ perl package_a_b.pl
Name "P1::bb" used only once: possible typo at package_a_b.pl line 14.
P2(1)P1aa
P2(2)P1aa
Use of uninitialized value $P1::bb in concatenation (.) or string at package_a_b.pl line 14.
P2(3)
P2(4)P1bb

P2からはP1のmy $bbが$bbで参照できて、$P1::bb だとエラー、なんだこりゃ…???
ちな 5.36.0 と 530.0 で確認した。
100
(1): 2023/06/07(水)21:31 ID:w5fTdC21(1) AAS
myはpackageとは何の関係もない
packageにmyのシンボルテーブルはない
だから(3)ではuninitialized value $P1::bbになる
(4)は単なる文字列
正常な振る舞いだよ
101: 2023/06/07(水)23:23 ID:ywJ2sk66(2/2) AAS
>>100
回答ありがとう、myがそういうものだと今日まで知らずにいた…おrz
102: 2023/06/08(木)00:48 ID:ZzDLFGD7(1) AAS
myのスコープはブロック、ファイル、evalの3つ
パッケージとは無関係だから>>99ではファイルスコープになるね
package P2でもう一度my $bb宣言したらエラーになることからも分かる
103: 2024/02/23(金)07:50 ID:3WpPBYhb(1) AAS
あげ
104
(1): 2024/04/14(日)21:35 ID:byNUCOGR(1) AAS
ローカルサーバーでsrandとrandで生成した乱数の値と
レンタルサーバーでsrandとrandで生成した乱数の値が違うのは何で?
どちらもsrandの値は同じとする。
105: 2024/04/15(月)00:21 ID:9X9lvy+w(1) AAS
このへんから探ってみては
外部リンク:github.com

煽りじゃないよ しんどいので俺はここまで
106: 2024/04/15(月)12:41 ID:cLz3iDP/(1) AAS
プラットフォームのifdefで切り分けてそうだからそれっぽいマクロ定数でも探すといいかも
107: 2024/04/15(月)17:29 ID:UgC/I+2W(1) AAS
ビルドされた環境のCライブラリ依存じゃない?
同じにしたいならMath::Random::MTとか使えばいいんでね
108: 2024/04/16(火)09:32 ID:Fr3sHPgG(1) AAS
>>104
一般論としてPerlの内部実装は無保証でコロッコロ変わるので、疑似乱数の再現性を担保したいならコードを同梱してしまうのが最も確実

cでたったこれだけ、Perlで詰めれば20行も要らんだろう、局所使用ならファイル内subでいいレベル
github.com/bmurray7/mersenne-twister-examples/blob/master/c-mersenne-twister.c

同階層にpl版もある
丁寧にコードされパッケ化で無意味に冗長なので参考ならこっち
アルゴリズム特許あるか知らんし、ライセンスを許容するなら同梱
109: 2024/04/16(火)14:14 ID:ipSHedtl(1) AAS
print"A\n",print"B\n";

これの動き教えてくれよ
出来ればサンプルソースも
110: 2024/04/16(火)15:16 ID:UEoqQOMp(1) AAS
print "A\n", print "B\n";
print("A\n", print("B\n"));
まず最初のprintの引数中のprint("B\n")が評価され"B\n"が出力される
print("B\n")が成功したので真の値1を帰す
print("A\n", 1)となる

B
A
1と表示される

print "X\n", 3 > 0;
print "X\n", 3 < 0;
print "X\n", open(my $fh, "no_such_file.txt");
111: 2024/04/16(火)15:37 ID:E/T1RXIg(1) AAS
成る程、() 使わない副作用意識しないとダメですね
ありがとうございます
112: 2024/11/17(日)20:01 ID:w8x6IOGf(1) AAS
poetryと同等の仕組みがないときつい
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.020s