【モダン推奨】Perlについての質問箱 50箱目

■ このスレッドは過去ログ倉庫に格納されています
2012/01/21(土) 10:56:39.03
CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: http://hibari.2ch.net/php/ )

回答する際はモダンな方法でお願いします
(例 jcode.plではなくEncodeモジュールを使った方法)
理由はもう2012年です。いい加減2000年以前の方法はやめましょう。
最新のPerlを使うほうがかっこいいです。
いつまで勉強しないつもりですか?
過去にとらわれるのはもうやめです。進歩しませんよ。

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

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

http://www.perl.org/get.html
● 2011/10/30 現在の最新版: 5.14.2

▼ 前スレ
Perlについての質問箱 49箱目
http://toro.2ch.net/test/read.cgi/tech/1319953460/
リンク集は >>2-3辺り
Perl 日本語処理の基礎の基礎 >>4辺り


2012/11/07(水) 23:28:00.83
Makefile.PLはこの作業を自動化するmakeファイルを生成してくれます。
↑これが原因か
何とも罪作りな記事だな
そのページのコメント欄に質問として書いちゃえよ
2012/11/07(水) 23:29:47.33

※1 これはWindowsではうまく動かない可能性があります。
2012/11/08(木) 07:22:49.06
初歩的なミスを
した物のどの記事もWin系なのかUni系
なのかわからん記事ばかりで

一応
WindowにGnuWin32を通した物の

make: *** `makefile' に必要なターゲット `C:\Perl\libConfig.pm' を make するルー
ルがありません. 中止.

なんてエラーが
返って来る。結局Windowユーザーは
Xsubpp覚えなくてもいいってことか。
2012/11/09(金) 00:56:41.22
Xsubppによる利便性の低下、な
2012/11/09(金) 12:27:18.50
>>379
これだから2cherはクズ
2012/11/09(金) 15:38:32.61
新聞じゃないんだからw
2012/11/11(日) 22:47:24.71
先生!makeファイルがmakeされません!
2012/11/11(日) 23:40:24.23
sudo apt-get install make
2012/11/12(月) 09:00:12.42
active perlだと、今はコンパイラも付いてくるからそれを使う。
makeはdmakeを使う。
2012/11/14(水) 00:00:27.32
彼女がメイク中でした。



(高見盛に激似です)
2012/11/17(土) 20:22:53.85
DOSこいっ
387デフォルトの名無しさん
垢版 |
2012/11/18(日) 01:18:35.04
文字列がtest_1やtest_2やtest_3のように
test_○のような形になっているかを正規表現で調べるにはどうすればいいんですか?
○の中は数字のみです
2012/11/18(日) 02:26:28.96
$str =~ /\Atest_\d\z/
389デフォルトの名無しさん
垢版 |
2012/11/19(月) 11:30:45.47
>>387←正規表現スレじゃなくてここできいてるこの基地害なに?
390デフォルトの名無しさん
垢版 |
2012/11/25(日) 00:36:01.64
あげ
391デフォルトの名無しさん
垢版 |
2012/11/25(日) 00:36:59.73
モダン厨のすくつ
392デフォルトの名無しさん
垢版 |
2012/11/25(日) 00:38:10.24
さらに一文字減らせた!

($d,$m,$y)=(localtime)[3..5];printf "%04d"."-%02d"x2,1900+$y,$m+1,$d


print localtime->ymd

に対抗してコードを減らし中。

($d,$m,$y)=(localtime)[3..5];printf("%04d-%02d-%02d",1900+$y,$m+1,$d)
($d,$m,$y)=(localtime)[3..5];printf "%04d-%02d-%02d",1900+$y,$m+1,$d
($d,$m,$y)=(localtime)[3..5];printf "%04d"."-%02d"x2,1900+$y,$m+1,$d
393デフォルトの名無しさん
垢版 |
2012/11/25(日) 00:38:50.82
printfの後のスペースなくても動いた!

($d,$m,$y)=(localtime)[3..5];printf"%04d"."-%02d"x2,1900+$y,$m+1,$d
2012/11/25(日) 00:44:06.73
そんなに短さにこだわるなら、無理やりprintfつかなくていいんじゃね?
sprintf馬鹿に感化されたのか知らんが。

($d,$m,$y)=(localtime)[3..5];printf"%04d"."-%02d"x2,1900+$y,$m+1,$d
($d,$m,$y)=(localtime)[3..5];print 1900+$y,"-",$m+1,"-",$d
395デフォルトの名無しさん
垢版 |
2012/11/25(日) 00:49:11.82
おっと馬鹿が勝手に条件変えてきたぞ
396デフォルトの名無しさん
垢版 |
2012/11/25(日) 00:51:05.56
>>394
print localtime->ymd;

これでいいんじゃね?

useまで入れたとしても短い。

use Time::Piece;print localtime->ymd;
($d,$m,$y)=(localtime)[3..5];print 1900+$y,"-",$m+1,"-",$d
2012/11/25(日) 09:16:00.99
せめてPOSIX。

use POSIX;
print strftime("%Y-%m-%d", localtime);
2012/12/02(日) 11:20:23.79
どうせすぐ古くなるんだから。保守するのに時間軸の視点は必要だぞ。
2012/12/09(日) 14:19:16.53
ポータブルPerlとかモジュールなしPerlとか
2012/12/09(日) 15:03:54.83
struct tfield *を保持する
MyTypeをブレースしたマジック変数を作りたい。
以下の(中略)のXSソースを使ってPerl側から


Hoge*な struct tfield *head[30]をハッシュに
よって閲覧するにはどうしたら良いか。そして、
マジックをRETVALにアクティブにするはどうればよいか具体的に述べよ。

struct tfield {
struct tfield *left[30];
int num;
char str[30];
struct tfield *right[30];
};
struct tfield *talloc(void)
{
return ((struct tfield *)malloc(sizeof(struct tfield )));
}
2012/12/09(日) 15:04:52.27
MODULE = MyTypePACKAGE = MyType

HV*
DataList()
PREINIT:
struct tfield *p,*head[30];
CODE:
hash=newHV();
sv=newSV(0);
ref=newRV_noinc((SV*)newHV());
sv_setref_pv(ref,"main::Tie",head);

sv_setsv(sv,sv_2mortal(newRV_noinc((SV *)hash)));
sv_bless(sv,gv_stashpv("MyType",TRUE));

sv_magic((SV* )hash,SvIV(SvRV(ref)),PERL_MAGIC_hints,NULL,0);

if(mg_find(SvRV(sv),PERL_MAGIC_hints)!=NULL)
printf("PERL_MAGIC_hintsp\n");
p=mg_find(SvRV(sv),PERL_MAGIC_hints)->mg_obj;

RETVAL=hash;

OUTPUT:
RETVAL
2012/12/09(日) 15:10:51.49
ちなみに環境はActive PerlでWindows7を使っています
403デフォルトの名無しさん
垢版 |
2012/12/09(日) 15:13:07.96
なお、提出期限は本日中とする。
2012/12/09(日) 20:41:15.31
確かRETVALて
マジック変数だよな。Perl側にアウトライン
した時に恐らくマジックに変異してるジャマイカ?

そして、またXSに入りINT2PTRで閲覧しよう
とする。うんで、マジックが掛かってるとキズかず
隠蔽された構造体にアプローチしようとしてとする。

上手く考えが定まらず、マジックやら
文法そのものやらに、あっちやこっち浮気し
まくってたらいつの間にやら難題に押しつぶされそうになってた。

もう資料の少ないマジックに手をださないから
RETVALに代入した後の処置を教えください。
2012/12/11(火) 00:35:47.74
つーか、スレまちがい
2013/10/12(土) 16:10:02.36
今から学ぶならやっぱPerlよりPythonなのかなあ?
2013/10/12(土) 21:02:22.21
>>406
りょうほういっとけ
2014/01/05(日) 23:44:28.13
>>406
さすがにrubyやphpならともかく、pythonはナイわ
2014/01/06(月) 16:11:01.27
解析するならPythonじゃね?
クラックコンテスト上位者はみんなPython使いのようだし。
2014/01/06(月) 16:12:58.25
間違えた、ハッキングコンテスト。
2014/01/17(金) 01:37:55.47
Django使うの以外にPython使う理由が見つからない
2014/01/17(金) 08:52:36.67
倍幅文字を含んだ文字列を端末にテーブル状に整形して表示したいのですが,

==================================
# ソースの文字コード: utf8
printf "%04s\n", 'ab';
{
  use utf8;
  printf "%04s\n", 'あ';
}
{
  no utf8;
  printf "%04s\n", 'あ';
}
===================================
00ab
000あ
0あ

use utf8 だと文字数でカウントしてるようなので
倍幅文字を含んだ行と含まない行とでズレてしまいます.

no utf8 だとバイトでカウントしているようなので
やはりズレてしまいます.

端末上に上手く整形して表示する方法はないものでしょうか?

非モダン質問箱の方は質問できる雰囲気ではなかったので
こちらで質問させて頂きました.
413デフォルトの名無しさん
垢版 |
2014/01/17(金) 14:45:12.15
my $文字幅合計=0;
my @文字群 = split //, $文字列;
for my $i(0 .. $#文字群){
$文字幅合計+=((unpack('C*', $文字群[$i]) - 30)*(unpack('C*', $文字群[$i]) - 127) < 0) ? 1 : 2;
}

文字のバイト列が31(\x1f)から126(\x7e)なら1でそれ以外は2を返す
2014/01/17(金) 14:52:43.34
>>411
生粋のWeb脳って気持ち悪い
415デフォルトの名無しさん
垢版 |
2014/01/17(金) 17:55:39.71
ゴミ
2014/01/17(金) 21:47:20.63
そういうのもうあるみたい
ttps://github.com/kaz-utashiro/MBPrintf
417デフォルトの名無しさん
垢版 |
2014/01/18(土) 19:55:51.97
与えられた文字列から適当な数値を求めたいんだけど
標準関数で簡単にやるにはなにかいい方法ある?
2014/01/18(土) 21:05:51.45
せめて10レスくらい読めよ
$ perl -le 'print for unpack q{C*}, q{もじ}'
227
130
130
227
129
152
2014/01/18(土) 21:11:44.49
>>418
お前やっぱ頭良くないんだな
2014/01/18(土) 21:13:59.31
joinすりゃいいだけじゃん
2014/01/18(土) 21:17:28.94
>>418
それだと文字列が長い時に困るんだよね
2014/01/18(土) 21:17:41.63
そこまで書かなきゃいけなかった?
2014/01/18(土) 21:21:14.21
>>422
いいから早く消えろってことだよ
やんわり言ったら分からなかった?
2014/01/18(土) 21:26:46.26
>>422
ウザ杉
2014/01/18(土) 21:27:09.30
>>421
BigInt付けるか、他の方法を考えるかしたら?
文字列じゃなくて、変数ってんならアドレスとかの方法もあるけど、
2014/01/18(土) 21:28:17.27
あっちで釣りの続きしてればいいのに
2014/01/18(土) 21:29:11.08
>>425
何で上から目線なの?
自己顕示欲満たしてやってんだから嫌なら答えるなよ。
2014/01/18(土) 21:31:14.66
>>425
基地害のお客様はこちらへお引き取りください。

http://toro.2ch.net/test/read.cgi/tech/1385039352/
2014/01/18(土) 21:32:59.96
そもそもこんなところで質問してあーだこーだ言わないと使えないんだったら、
Rubyをサクッと学習してやったほうが早い。
2014/01/18(土) 21:33:11.61
嬉しそうだなあ、、、
2014/01/18(土) 21:38:18.15
>>426
バーカ
2014/01/18(土) 21:39:58.39
嬉しそうだな、、、
433デフォルトの名無しさん
垢版 |
2014/01/18(土) 23:17:08.53
配列の配列を戻り値にしたいんだけど
どうしたらいい?
2014/01/18(土) 23:21:00.50
そういう場合は配列のリファレンスを使う
2014/01/18(土) 23:47:42.99
自演キモw
2014/01/19(日) 00:03:33.90
Perl厨の自演って分かりやすいな。
文章構成能力がないから、短文で一問一答w
2014/01/19(日) 08:36:16.42
お前の自演の方もなかなか解りやすいぞ、PHP厨
2014/01/19(日) 14:34:32.39
糞言語の糞スレ
439412
垢版 |
2014/01/19(日) 20:39:49.50
>>413
制御文字を除外するために文字が特定範囲にあるか調べる方法がテクいです

>>416
同じことを思ってる人はいるものですね.
使ってみた限りでは問題なく調整してくれるみたいです.
\p{East_Asian_Width} で定義されてるかどうか等で判定しているので
半角カナもちゃんと幅1で計算されます.


MBPrintf.pm の方を使って printf を置き換えることにしました.
HTMLとかにして出力するしかないかなと思っていたところ
さくっと printf を置換えするだけで綺麗に出力できそうなので
大変助かりました. 質問してみて良かったです.
レスありがとうございました.
2014/01/19(日) 20:47:27.99
>>439
やっぱ馬鹿なんだな
お前みたいな奴が日本のIT産業をダメにしてんだよ
2014/01/19(日) 23:18:27.65
同じこと考えるも何も、日本でPerl広めたのはこの人だよ
2014/01/20(月) 01:59:57.20
>>439=無知の極み
2014/01/20(月) 02:09:18.33
受け答えのレベルから推察するとシフトJISを使うことを思いついていない気がする
2014/01/20(月) 04:37:59.99
Perl以前の知能の問題なんだろw
2014/01/20(月) 06:18:02.59
コマンドラインで使う前提での質問なのにシフトJISってw
質問すら読解する能力無いだろ

ほんとにWebProgに帰れよドアホ
2014/01/20(月) 10:35:12.20
ゴミは黙ってろ
2014/01/20(月) 17:02:27.54
>>445
草生やしてんじゃねーよ。
半笑いのつもりか?
半笑いでバカをアピールする>>445哀れ。
2014/01/20(月) 19:07:10.73
連レスかまして無知晒すから、解りやすいぞPHP厨
2014/01/20(月) 22:18:42.87
キチスレ
450デフォルトの名無しさん
垢版 |
2014/01/24(金) 19:52:20.84
Config::INI とかTiny とかのライブラリで
コメント行は ; になっているけど
これを # にするようにできるライブラリはある?
2014/01/24(金) 19:55:55.11
>>450
ある。
回答きたんだからさっさと消えてね。
2014/01/24(金) 20:05:16.41
>>450
ないよ
2014/01/24(金) 20:33:39.02
>>450
ここが参考になる
ttp://to-a.ru/LEeAgi
2014/01/24(金) 20:46:52.82
>>450
ナイアルヨ
2014/01/25(土) 15:26:50.61
その程度も自分で調べられないとか頭悪いんだろうな
調べたら3分かかからなかったけどな
2014/01/25(土) 23:28:51.18
このスレって何人いるんだろう?
2014/01/26(日) 02:01:56.35
日本人だと思う
2014/01/26(日) 02:47:37.23
おまえあれだろさっきまでなぞなぞスレにいただろ
2014/01/26(日) 04:20:51.88
うまいw
2014/01/26(日) 17:46:42.97
>>454 は中国人かも知れんぞ
2014/01/26(日) 19:06:15.38
日本人ですだよ
2014/01/26(日) 19:27:54.97
ニーハオ!
パンニハムハサム ザパニーズニダアルヨ!
ショーグンサマ バンザイ!
テポドン バンザイ!
2014/02/05(水) 19:25:52.75
文字列が二つあって、その比較をしたい
共通1 差分1 共通2 差分2 共通3
みたいな感じで、2箇所まで差分を抽出したい

現実的な速度で動くうまい方法ないかな
2014/02/05(水) 19:28:44.02
>>463
他人に頼る前提で始めるような馬鹿には無理。
2014/02/05(水) 19:37:38.58
>>463
はぁ?
自分でやったけど何秒かかって、これが何秒以内に終わるようにとかも書けねーの?
本当にお前ゴミだな
リアルでもどうせその調子なんだろ
リアルでもゴミだと思われてるけど気付いてる?
2014/02/05(水) 19:44:06.43
自分で試すことすらしない猿未満の低能には言うだけ無駄
猿ですら目的達成のために試行錯誤するのに
2014/02/05(水) 19:54:20.78
$str1 = 'aaabbbcccdddeee';
$str2 = 'aaafffcccgggeee';

$test = $str1 . "\t" . $str2;
$test =~ /(.+)(.+?)(.+)(.+?)(.+)\t\1(.+?)\3(.+?)\5/;
$c1 = $1;
$d11 = $2;
$c2 = $3;
$d12 = $4;
$c3 = $5;
$d21 = $6;
$d22 = $7;

print "$c1 $d11 $c2 $d12 $c3\n";
print "$c1 $d21 $c2 $d22 $c3\n";

結果
aaa bbb ccc ddd eee
aaa fff ccc ggg eee

こんなのはすぐに思い付くと思う
ところがこれは、文字列の長さが100文字とかでもう遅すぎて使えなくなる
2014/02/05(水) 19:57:49.18
こういうのを見るたびに
足りないのは知識やスキルではなく羞恥心なんだなと思う
2014/02/05(水) 21:11:10.78
>>467
ここはごみ捨て場ではありません。
2014/02/05(水) 21:26:16.47
2つの文字列を文字ごとに分解して2つの配列を作ってから↓
ttp://perldoc.jp/docs/modules/Algorithm-Diff-1.15/Diff.pod
2014/02/05(水) 22:05:27.01
実に頭の悪そうな回答がきたなw
2014/02/05(水) 22:39:45.84
diffは多少一致してない部分があってもいい、みたいな曖昧な判定をするから、
余計にややこしいんだよな
2014/02/05(水) 23:42:17.25
うちのLarryに何か用かい?
2014/02/06(木) 01:46:47.51
おれならxor使うけどね
475デフォルトの名無しさん
垢版 |
2014/06/20(金) 08:07:41.06ID:w/WZ2GYd
say "";
2015/02/07(土) 15:14:06.33ID:yYV1uKlQ
ネットで検索する時は単語をスペースで区切ってそのANDで結果を得るけど、
同じことを正規表現でやりたい時はどう書けばいい?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況