[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/06 15:43 / Filesize : 269 KB / Number-of Response : 1047
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlについての質問箱 63箱目



1 名前:デフォルトの名無しさん [2014/02/19(水) 23:36:23.29 .net]
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: kohada.2ch.net/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.18.2)

▼前スレ
Perlについての質問箱 61箱目
toro.2ch.net/test/read.cgi/tech/1381561905/
Perlについての質問箱 62箱目
toro.2ch.net/test/read.cgi/tech/1385039352/

1001 名前:デフォルトの名無しさん [2018/01/23(火) 12:28:01.19 ID:f+jO8q2F.net]
>>967
感じるではなくロックとして機能しないよね?

1002 名前:デフォルトの名無しさん mailto:sage [2018/01/23(火) 19:08:17.77 ID:N8Mjx+M1.net]
>>968
ファイルシステムから見ると削除して作成すると、同じファイル名でも別ファイルになる
排他処理は同じファイルを使ってるもの同士なら出来る
例えばopenしたものをずっと使い続けるプロセス同士なら、削除された後でも相互排他が出来る

1003 名前:デフォルトの名無しさん mailto:sage [2018/01/23(火) 20:56:31.43 ID:wO1dM6nx.net]
>>969
3つ以上のプロセスで必ず破綻するように思うが。
いや2つでも2回目でダメになるか。

1004 名前:デフォルトの名無しさん [2018/01/23(火) 22:04:43.15 ID:ZqrAOfGF.net]
あ、ずっとオープンしっぱなしならその後削除されても大丈夫ってことか。
それはそうだな。なんか危うさを感じるが。

1005 名前:デフォルトの名無しさん mailto:sage [2018/01/30(火) 21:14:29.11 ID:SNmuV+Ws.net]
ヒアドキュメントをファイルに出力する時に、

print $out <<"EOC";
ならokで、
print $out << "EOC";
だと駄目なのは何故?

1006 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 01:11:29.08 ID:ajZ2gLGd.net]
>>972
<< はビットシフト演算子でもあるので、優先順位的に
$out << "EOC" として解釈されちゃうから…?
print $out (<< "EOC"); や print << "EOC"; で通るならそうだと思う。

1007 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 01:46:30.10 ID:PKL4UNme.net]
<<の直後が空白文字だと空白文字自体が識別子とみなされる
と、とある本に書いてあった

1008 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 03:10:45.37 ID:ajZ2gLGd.net]
<<964
perldoc.jp/docs/perl/perlop.pod#Regexp32Quote-Like32Operators
> <<EOF
<略>
> 識別子がクォートされていない場合は、<< と識封ハ子の間に 空白を入れてはいけません。
> (もし空白を入れると、空識別子として扱われます; これは有効で、 最初の空行にマッチ
> するようになります。)

昔は
print <<;
document here.

print "foo";

みたいにできたけど、今これやると警告が出る。<<""; なら OK。

#!/usr/bin/perl -w
use strict;
sub E { print "\n6\n" }
open my $out, '>&STDOUT' or die $!;
print $out <<"";
1

print $out (<< 'E', "3\n", <<'');
2
E
4

print $out << 'E'; # Argument "E" isn't numeric in left bitshift (<<)
"5"; # Useless use of a constant ("5") in void context
E

1009 名前:デフォルトの名無しさん [2018/01/31(水) 09:25:45.73 ID:H6iQ2Lk/.net]
>>972
<<の直後のスペースの有無?
そりゃシェルスクリプトみたいな <<EOL のような何もクオートしない形式も許している都合でシェルの文法に合わせたからではないかな。



1010 名前:デフォルトの名無しさん [2018/01/31(水) 09:27:00.94 ID:H6iQ2Lk/.net]
あ、すまん。リロードせずに書いてしまった。既に回答書かれてたな。

1011 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 19:05:43.73 ID:vCtk0IVE.net]
スペース空けるの禁止ならそれでいいんだけど、
ファイルハンドラが無いならスペースがあってもokなのが納得行かない

1012 名前:デフォルトの名無しさん [2018/02/01(木) 07:25:10.05 ID:Msx4nr7P.net]
気持ちは分からなくもないが、変数の場合はしょうがない。>>973 に書かれてるとおりだ。

1013 名前:デフォルトの名無しさん [2018/02/01(木) 12:35:16.66 ID:Msx4nr7P.net]
誰もつっこまないが、
$out->print( << "EOC");
と書けばいいと思う。
bless されてない場合は昔は
use IO::Handle;
が必要だったが今では
perl -e 'STDOUT->print("abc")'
なんてこともできる。
個人的には、ファイルハンドルの後に , があるというアホな間違いをせずに

1014 名前:マむというところで助かっている。 []
[ここ壊れてます]

1015 名前:デフォルトの名無しさん [2018/02/02(金) 07:43:01.24 .net]
ヒアドキュメントなんてプログラムを読みにくくする諸悪の根源

1016 名前:愛知人 [2018/02/02(金) 12:10:04.50 .net]
Wikipediaの12桁トリップの生成スクリプトで12桁以上のトリップキーの変換が5chの結果と合いません。どうすれば合いますか。

1017 名前:デフォルトの名無しさん mailto:sage [2018/02/03(土) 08:12:51.87 ID:hZgGNvq2.net]
Archive::Rar を使って、中身のファイルサイズを取得するにはどうすれば
無理なら、代わりに何を使えばいい?

1018 名前:デフォルトの名無しさん [2018/02/03(土) 09:38:14.14 ID:nCUOym6+.net]
rar コマンドをインストールしてないから CPAN でソースコードを見ただけだが、List を呼べば rar の出力をパースして list に入れてくれるみたいだよ。
試してないから勘違いしてるかもしれないけど、使ってるならソースコードの List, _AddToList 辺りを読めばいいかも。

1019 名前:デフォルトの名無しさん mailto:sage [2018/02/03(土) 10:13:43.25 ID:hZgGNvq2.net]
Listはファイル名一覧しか渡してくれないんだよな



1020 名前:デフォルトの名無しさん mailto:sage [2018/02/03(土) 10:20:52.21 ID:hZgGNvq2.net]
-alldata を指定すれば、->{size} で見えるのか

どうせやってるのは、rar.exe の出力を読んでテキスト解析してるだけなので、
似たようなことを自前でやった

1021 名前:デフォルトの名無しさん [2018/02/03(土) 14:48:15.33 ID:nCUOym6+.net]
マニュアルには書かれてなかったのか……まあ、信頼性の低い方法だしね。

1022 名前:デフォルトの名無しさん mailto:sage [2018/02/04(日) 11:13:30.15 ID:22FJuDW8.net]
出力される表の形式に似せたファイル名とかにすると、多分騙されるんだろうな

1023 名前:デフォルトの名無しさん [2018/02/09(金) 18:18:02.60 ID:U+AwHosU.net]
>>981
KENT WEBの見にくさを見てから言ってくれ

1024 名前:デフォルトの名無しさん [2018/02/09(金) 20:07:25.83 ID:VqU2EMqO.net]
ヒヤー

1025 名前:デフォルトの名無しさん mailto:sage [2018/02/09(金) 20:21:39.58 ID:67QUQBJT.net]
他言語弄るとき、まずヒアドキュメント探すつっても過言じゃ無いんだが…

1026 名前:デフォルトの名無しさん [2018/02/09(金) 20:58:36.22 .net]
>>989
printはもっと読みにくいに決まってるだろ
テンプレートしかあり得ん

1027 名前:デフォルトの名無しさん mailto:sage [2018/02/09(金) 21:23:05.06 ID:ukY4fsl4.net]
   here => <<~EOM
   インデント
   出来る
   EOM

これ出来るようになって昔書いたソースが結構綺麗になった

1028 名前:デフォルトの名無しさん mailto:sage [2018/02/13(火) 11:06:08.61 ID:b5aNFBbA.net]
ソースにhereドキュメントが多量に含まれてる時点で
キレイじゃねーよw

1029 名前:デフォルトの名無しさん [2018/02/13(火) 21:01:03.94 .net]
それな



1030 名前:デフォルトの名無しさん [2018/02/13(火) 21:31:52.97 ID:RM6vxbUw.net]
ヒアドキュメントはうまくやると配布するファイルをプログラムのファイル一つにまとめられる。
そういうのは何かのプログラムのインストーラやアップデータには良いかも知れない。

1031 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 01:07:32.41 ID:eq6pqk6J.net]
全てのスクリプト言語には、ファイルを一つに結合する機能と
コードを圧縮暗号化する機能が必要な気がする
JSにあるアレね

1032 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 02:24:43.93 ID:kFW7p5Uz.net]
SQL使うときだなヒアドキュメントは
ORM嫌い

1033 名前:デフォルトの名無しさん [2018/02/14(水) 09:08:25.15 ID:1w/9kxzB.net]
ああ。そういやSQL文に使ったなあ。
長くなるのが普通だもんなあれって。

1034 名前:デフォルトの名無しさん [2018/02/14(水) 13:42:37.08 ID:eEfPvNoj.net]
$str = <<'EOF';
エスケープの必要性から解放されたい場合もあるんだよなあ。
これに相当することを C でやるには別ファイルに分けて Makefile で

str_escaped : str_raw
sed 's/\([\"\\]\)/\\\1/g ; s/^/\"/ ; s/$/\"/ ;' < str_raw > str_escaped

みたいにして C の方で

str[] =
#include "str_escaped"

とする必要がある。Perl は本当に便利だ。
EOF

1035 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 13:50:00.92 ID:L6K2VJP2.net]
Pealで正規表現なら、デミリタ変えるだけでいいじゃん
可読性下がるけど

$hoge =~ m!/!;!g;

みたいな

1036 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 19:56:29.61 ID:JCOq4GRt.net]
終わりを示す文字列にQEDを使う

1037 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 20:05:36.90 ID:eq6pqk6J.net]
それが厨二病

1038 名前:990 [2018/02/14(水) 22:39:20.53 ID:eEfPvNoj.net]
>>1001
何を言いたいのかさっぱり解らないが、ひょっとして >>1000 に興味持ってくれた?
そうだとしてもやっぱり何を言いたいのかさっぱり解らないのだが。
ちなみに Perl と C を比較してるのであって、sed は関係無いよ。
「これに相当すること」の「これ」とは >>1000 全体を Perl コードとして実行した結果のことで、正規表現は何の関係も無い。
大筋としては
・元のテキストはエスケープなどの加工をしないでおきたい。
・エスケープが必要な場合でも目視と手作業なんて論外。自動化したい。
・実行時に別ファイルから読むのではなくプログラムに埋め込みたい。
という前提があって Perl と C でそれぞれどのように実現するかという話だ。
Perl にいくつもあるクォーティングの正確な仕様、Makefile の仕様、C の言語仕様を知ってる人向けだから無理しなくてもいいよ。
>>1000 に対してじゃなかったのならごめんね。自意識過剰だったね。

1039 名前:デフォルトの名無しさん mailto:sage [2018/02/15(木) 09:02:00.83 ID:8SUVFt/S.net]
> 自意識過剰だったね。

そのとおりだろうなw



1040 名前:デフォルトの名無しさん [2018/02/15(木) 23:40:07.21 .net]
Perlコードでもレスでも変わらない真実

ぎっしり長文書くやつは無能

1041 名前:デフォルトの名無しさん mailto:sage [2018/02/15(木) 23:41:00.25 ID:8SUVFt/S.net]
短文なら有能!俺とか!

1042 名前:デフォルトの名無しさん [2018/02/16(金) 10:21:33.25 ID:OW1usLwi.net]
俺も俺も

1043 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 18:54:42.22 ID:ZDCA61/e.net]
die;

1044 名前:デフォルトの名無しさん [2018/02/16(金) 20:51:22.93 ID:YSXjevvC.net]
ひでぶ

1045 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1457日 21時間 15分 0秒

1046 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<269KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef