07/01/06 23:42:21
>>198
GNUプロジェクトによれば、首尾一貫性と均一性のためにperlと同じライセンス
(GPLとArtistic Licenseのデュアルライセンス)を適用することを推奨されている。
<blockquote cite="URLリンク(www.gnu.org)
Perl のライセンス
このライセンスでは、Artistic ライセンス とGNU GPLのどちらかを選択できるとしています。
言い換えれば、あなたはこれらの2ライセンスのどちらかから選べるということです。
フリーソフトウェアのライセンスに要求される条件は満たしますが、本物のコピーレフトとは言えないかも知れません。
選択肢の一つとして GNU GPLがありますので、GNU GPLとは矛盾しません。
Perl 4 や Perl 5 用のパッケージを書く場合には、Perl プログラミングの世界における首尾一貫性と均一性を促進するために、
このライセンスを適用されることをお勧めします。Perl 以外の分野では、単に GNU GPL を使う方が好ましいので、
このライセンスを使わないよう強くお勧めします。
</blockquote>
が、好きなライセンスにすりゃ良いんじゃない?
ついでにperlmodstyleには
<blockquote>
Licensing
Make sure that your module has a license, and that the full text of it is included in the distribution
(unless it's a common one and the terms of the license don't require you to include it).
If you don't know what license to use, dual licensing under the GPL and Artistic licenses
(the same as Perl itself) is a good idea. See perlgpl and perlartistic.
</blockquote>
とある
201:デフォルトの名無しさん
07/01/07 02:04:43
修正BSDとかMITとかもあるけど。やっぱりGPL/Artisticのデュアルライセンスにしとくのがいいかな。
202:デフォルトの名無しさん
07/01/07 05:25:31
[1-9.]のみで構成される文字列を表示したいのですが
if ( $text =~ "[1-9.]" ) {
print "$text \n";
}
だとうまくいきません。
どのように修正すればいいですか?
203:デフォルトの名無しさん
07/01/07 05:25:42
(?: って変数に入れないようにするやつでしょ?
204:デフォルトの名無しさん
07/01/07 05:28:07
print "$&\n" if $text =~/[1-9.]/;
205:デフォルトの名無しさん
07/01/07 05:32:00
文字列だった。すまん
一つだけなら
/[1-9.]+/
すべてなら
print(join(',', /[1-9.]+/g));
206:デフォルトの名無しさん
07/01/07 06:01:09
#!c:\usr/bin/perl ←だとアクセスできますが、
#!usr/bin/perl ←だとアクセ500のエラーがでます。
3時間探しましたが答えが見つかりませんでした。
よろしくお願いします。
os:win2000
webserver:apache 2.059
active perl
207:デフォルトの名無しさん
07/01/07 06:04:39
>>206
#!/usr/bin/perl
208:デフォルトの名無しさん
07/01/07 06:05:19
スラッシュ一個たんなくね?
×#!usr/bin/perl
○#!/usr/bin/perl
209:デフォルトの名無しさん
07/01/07 06:09:07
>>207-208
いろいろやっていくうちに"/"が消えてました。
やっとゴールにたどり着きました。ありがとうございました。
210:デフォルトの名無しさん
07/01/07 06:25:02
>>205
説明不足ですみません。
$text = "12:24" なら $textの表示そのものをしない
$text = "3.142" なら表示する
というような不要な文字が1つでもあれば
無視するといった感じのものが作りたかったのです。
よろしくお願いします。
211:デフォルトの名無しさん
07/01/07 06:30:58
$text =~/^[1-9.]+$/ and print "$&\n";
212:デフォルトの名無しさん
07/01/07 06:32:14
printのとこ、$textじゃなくてわざわざ$&で出力する意味あるの?
213:デフォルトの名無しさん
07/01/07 06:35:49
短縮。
214:デフォルトの名無しさん
07/01/07 06:40:16
>>211
無事作成できました。ありがとうございました。
215:デフォルトの名無しさん
07/01/07 07:26:19
2chのdatファイルを、差分で取得したいのですが、どのようにしたらよいのでしょうか?
216:デフォルトの名無しさん
07/01/07 08:09:31
If-Modified-Since と Range をつけて叩いて 206|304|416 のどれかをもらうようにする
217:デフォルトの名無しさん
07/01/07 14:11:53
package の中で、
sub func(\[$@]) {
my $class = shift;
my $arg = shift;
}
として、$arg に配列もしくはスカラのリファレンスを受け取りたいのですが、
$arg にはスカラしか入ってくれません。
どう書くのが正解でしょうか?
218:デフォルトの名無しさん
07/01/07 15:06:23
>>202
\. じゃなくてええの?
219:デフォルトの名無しさん
07/01/07 15:44:04
>>218
自分でちょっと試せばいいだろ
print "Matchn" if 'ABC' =~ /[.]/;
220:デフォルトの名無しさん
07/01/07 17:38:56
>>218
文字クラスの中だから
221:デフォルトの名無しさん
07/01/07 20:45:01
>>217
prototypeに頼らないのが正解。
そのprototype、第一引数について書かれてないけど。
222:デフォルトの名無しさん
07/01/07 22:45:16
ppmをつかってモジュールを持ってくるときに、zipで圧縮されてると展開方法を知らんとエラーが出てしまうのですが、
どうすればこのエラーが出なくなるんでしょう。
223:デフォルトの名無しさん
07/01/07 23:28:08
Archive::Zip入ってる?
224:デフォルトの名無しさん
07/01/08 00:48:56
>>223
入ってます。
225:デフォルトの名無しさん
07/01/08 01:27:07
手元だとzipアーカイブでもインストールできるなぁ。どこのリポジトリの何で発現してる?
226:デフォルトの名無しさん
07/01/08 01:49:50
>>225
ためしに再インストールしようとしたArchive::Zipで出てます。。。
何処のレポジトリかはどうやってわかるんでしょうか。
227:デフォルトの名無しさん
07/01/08 08:59:59
csvの一行目を検索して、二行目をprintするだけなんですが
「ー」を含む言葉だと検索結果で出力されません
「。」「・(半角)」「・(全角)」とか色々やったんですが、どうやら「ー」だけのようです
解決方法をよろしくお願いします
open(IN,"$file");
while(1) {
$line = <IN>;
@data = split(/,/ ,$line);
if ( $line eq "" ) { last;}
if ( $data[0] =~ /$in{'test'}/ ) {
print "$data[1]\n";
}
}
close(IN);
228:デフォルトの名無しさん
07/01/08 11:44:40
>>227
CSVファイルを扱うならば、Text::CSV をお使いください。
(Text::CSV_XS かもしれない、手元にソースがない)
229:デフォルトの名無しさん
07/01/08 12:25:03
>>228
返信ありがとうございます
Text::CSVモジュールを使わないと対処できないということでしょうか?
フリーのwebスペースを利用したいので、モジュールはインストール出来ないです
Text::CSV自体は優れものみたいですね
230:デフォルトの名無しさん
07/01/08 12:27:20
>226
えっと、ppmシェルで、
search Archive-Zip
って入力して。
Searching in Active Repositories
1. Archive-Zip [1.18] Archive-Zip
こんな感じに出てくると思う。仮に1番なら
desc 1
って入力したときなんて表示されてる?
231:デフォルトの名無しさん
07/01/08 13:21:02
>>227
つShift_JISの罠
/\Q$in{'test'}\E/
Text::CSVはマルチバイト文字通ったっけ?
Text::CSV_XSでbinaryオプションを与えない駄目だったような記憶が
232:デフォルトの名無しさん
07/01/08 14:02:13
Text::CSVは0x09(Tab)と0x20(Space)から0x7e(Tilde)の範囲しか使えないね。
Text::CSV_XSでbinaryオプションつけないとダメだ。
233:デフォルトの名無しさん
07/01/08 14:07:57
>>231
返信ありがとうございます。おかげで解決することができました
ただ、「\Q」が「\Eまでのメタ文字をリテラルとして判断する」のは別ったのですが
「/$in{'test'}/」←これのどこにメタ文字があるのかが分らないです
解決はしたけど理解出来てない…
234:デフォルトの名無しさん
07/01/08 14:25:47
>>233
「ー」はShiftJISで0x81 0x5Bと表される。この2バイト目が'[' = 0x5B
他にもソ('\')とか+('{')とか色々。
文字コードの割り当て参考資料
URLリンク(www-cms.phys.s.u-tokyo.ac.jp)
ASCIIコード表
URLリンク(adlib.rsch.tuis.ac.jp)
235:デフォルトの名無しさん
07/01/08 14:31:01
>>233
「$in{'test'}」自体がメタ文字を含むってことじゃなくて、
実行時に変数$in{'test'}にメタ文字を含むShiftJIS文字が入る可能性があるってこと。
236:デフォルトの名無しさん
07/01/08 14:51:17
>>234-235
かなり見当違いな考えをしてたみたいですね
「ー」以外にも注意しなければいけない文字が結構ありますね
ご丁寧にありがとうございました
237:デフォルトの名無しさん
07/01/08 16:52:09
>>230
1: Archive-Zip
Provide an interface to ZIP archive files.
Version: 1.18
Author: Ned Konz <perl@bike-nomad.com>
Provide: Archive::Zip version 1.18
Require: File-Which
Require: PathTools
Repo: trouchelle
CPAN: URLリンク(search.cpan.org)
Installed: 1.18 (perl)
2: Archive-Zip
Provide an interface to ZIP archive files.
Version: 1.18
Author: Adam Kennedy (cpan@ali.as)
Provide: Archive::Zip version 1.18
Provide: Archive::Zip::BufferedFileHandle
Provide: Archive::Zip::MemberRead
Provide: Archive::Zip::MockFileHandle
Require: File-Which
Repo: ActiveState Package Repository
CPAN: URLリンク(search.cpan.org)
Installed: 1.18 (perl)
3: Archive-Zip
Provide an interface to ZIP archive files.
Version: 1.18
Author: Ned Konz (perl@bike-nomad.com)
Require: Compress-Zlib
Repo: bribes
CPAN: URLリンク(search.cpan.org)
Installed: 1.18 (perl)
こんな感じです。
238:デフォルトの名無しさん
07/01/08 17:32:10
>>227
おもったが、他の文字コードに変換してsplitするのはどうよ。
いちばんお手軽。
open(IN,"$file");
while(1) {
$line = <IN>;
$line=Jcode->new($line)->euc;
@data = split(/,/ ,$line);
if ( $line eq "" ) { last;}
if ( $data[0] =~ /$in{'test'}/ ) {
print Jcode->new("$data[1]\n")->sjis;
}
}
close(IN);
239:デフォルトの名無しさん
07/01/08 17:41:21
たまに思うのだが、単なる文字列のスカラを
"$file" とかって、ダブルクォートで括って書くの無駄だよね。
全く同じ内容の、新しい文字列を生成してる訳でしょ?
だったら単に $file って書いた方が効率良いのに。
KENTとか、どっかのサンプルでわざわざ括るようになってるのかな。
こういう書き方してる人が、どこで習ってくるのか知りたい。
240:デフォルトの名無しさん
07/01/08 17:51:09
>>238
$in{'test'}が正規表現の場合の話か。
EUCにするくらいなら、変換に多少コストが掛かるがUTF-8にして処理したほうがいいと思う。
今度は>>176こういう問題が発生する。SJISでも率は低いが起こるけれどね。
ってもしかして元質問も正規表現を入力する質問だったんだろか…
indexの代わりにマッチングを行ってるだけかと思って\Q\Eで答えちゃったけれども
>>239
最近は見ないけれど
print "@hoge";
とやっておいてなんか表示が変だと質問してくる人までいるから困る。
ついでにperlfaq
URLリンク(www.kt.rim.or.jp)
241:デフォルトの名無しさん
07/01/09 00:43:01
>>239
あ、それ昔やってた。
なんかprint = ダブルクォート括らないと不安、みたいな気がしてたような。
242:デフォルトの名無しさん
07/01/09 00:46:26
#俺にも
print $a, $b; #とすればいいところを
print $a . %b; #としていた時代や
print "$a$b"; #としていた時代があったなあ
243:デフォルトの名無しさん
07/01/09 01:05:55
カンマは直接に文字連結の意味じゃないから余り好きじゃないなぁ。。
そっちの方が速いんだけどね。
244:デフォルトの名無しさん
07/01/09 01:39:08
強制的に文字列コンテキストに変えたいときとか。
オブジェクトじゃなくてその文字列表現だけ保持したい場合とかあるでしょ。
245:244
07/01/09 01:46:32
ちゃんと読んでなかった。スマソ
246:デフォルトの名無しさん
07/01/09 12:09:24
>>243
散々既出だが、一応突っ込んどく。カンマの方が遲い
use Benchmark ;
my ( $hoge, $moge ) = ( 'hoge', 'moge' ) ;
sub dot { print STDERR $hoge . $moge . "\n" ; }
sub dq { print STDERR "$hoge$moge\n" ; }
sub comma{ print STDERR $hoge , $moge , "\n" ; }
timethese ( 1000000, { op1 => 'dot', op2 => 'dq', op3 => 'comma' } ) ;
$ perl Bench.pl 2> /dev/null
Benchmark: timing 1000000 iterations of op1, op2, op3...
op1: 15 wallclock secs ( 7.67 usr + 4.81 sys = 12.48 CPU) @ 80128.21/s (n=1000000)
op2: 12 wallclock secs ( 7.37 usr + 4.67 sys = 12.04 CPU) @ 83056.48/s (n=1000000)
op3: 22 wallclock secs ( 9.13 usr + 11.23 sys = 20.36 CPU) @ 49115.91/s (n=1000000)
247:243
07/01/09 13:10:54
>>246
初心者でゴメン。Windowsだから、nulに出力して実行してみた。
(Windows XP SP2 ActivePerl5.8)
Benchmark: timing 10000000 iterations of op1, op2, op3...
op1: 12 wallclock secs (11.02 usr + -0.02 sys = 11.00 CPU) @ 909173.56/s
(n=10000000)
op2: 12 wallclock secs (10.87 usr + 0.00 sys = 10.87 CPU) @ 919540.23/s
(n=10000000)
op3: 8 wallclock secs ( 7.02 usr + 0.00 sys = 7.02 CPU) @ 1425516.75/s
(n=10000000)
あれ?最初自分の考えでは関数を二回使ってるカンマの方が遅いと思ってたんだけど、
ベンチしたらドットの方が速いんで>>243を書いた。
なんで結果違くなっちゃうのか誰か教えて~。
248:243
07/01/09 13:29:23
あー、わかった。Perlでの出力処理はcommaの方が速いけど、
systemのIOでのオーバーヘッドで結果的にdotの方が速いという寸法か。>>246
Windowsで実際にファイルに出力して計測してみると大体同じ(わずかにcommaが速い)になった。
ここらへんはLinuxとWindowsで違うんだろうね。
249:デフォルトの名無しさん
07/01/09 14:06:58
>>246
うんにゃ。
8Bのメモリ確保なら大してコストかからんからサンプルとして不十分じゃないか?。
$hogeが十キロの単位になってくるとカンマが追い抜くんじゃないだろうか。
250:デフォルトの名無しさん
07/01/10 01:42:28
>>248
いや、>>246はSTDERRに出力してるからカンマ区切りが遅くなっているだけ。
STDERRはperl内部でも特別扱いされていて、カンマで区切られた要素毎に fflush される。
なので、STDERRへ出力する場合はカンマ区切りの方が(fflushの増える分だけ)遅くなる。
他のハンドルだと($|=1でも)、普通はカンマ区切りの方が速くなる。
251:デフォルトの名無しさん
07/01/10 04:22:12
えっちだから遅いんだね。
252:デフォルトの名無しさん
07/01/10 15:25:22
フリーウェアのソースを眺めてると、一つのファイルにやたらと機能を詰め込んでるのが
多いように感じるんだけど、これってどうなんだろう。
掲示板だったら、表示.cgi 書込み.cgi とか分けた方が保守しやすいのでは、と。
意見求みまする。
253:デフォルトの名無しさん
07/01/10 15:43:02
>>252
インスコするファイルがたくさんあるとお子様が混乱してしょうもない
質問で邪魔してくるので、ソースメンテする手間はかかるけどトータル
では得らしい。
254:デフォルトの名無しさん
07/01/10 15:51:55
コーディング外の質問です。
今、plファイルのwindows向けのアイコンを何となく作っていますが、
真珠っぽいのがファイルについたアイコンか、らくだの絵のアイコンかどちらがふさわしいと思いますか?
255:デフォルトの名無しさん
07/01/10 16:07:31
当然らくだ
256:デフォルトの名無しさん
07/01/10 16:18:38
PARのparl.exe
257:デフォルトの名無しさん
07/01/10 16:25:41
>>256
258:デフォルトの名無しさん
07/01/10 20:00:56
初めて書き込みさせて頂きました。
現在、perl(HPUX)とNet-Telnet-3.03を利用してtelnet接続しているのですが、
telnet中にESCキーを入力させる事は可能なのでしょうか?
perl:v5.8.0 built for PA-RISC1.1-thread-multi
telnet:Net-Telnet-3.03
対話式なプログラムを実行していき、途中で
どうしてもESCキーが必要になりました。
$telnet->print("\x1B");
こんな感じで文字コード入力でもダメでした。。
259:韋駄天はふと考えた
07/01/10 23:02:23
あなた達も↓のような経験が一度や二度あるでしょう。私はわずか4年の間に
2回もパソコンをウイルスによって不調になり使えなくなりました。
私達はパソコン製造業者及び修理業者とパソコン関連で商売をしている業者を
あまりにも野放にしすぎました。
その結果が自作自演ウイルスバラ撒きの悪徳商法です。
703 :韋駄天はふと考えた :2007/01/10(水) 22:11:17 ID:ZKnpXOph
ノートンがウイルスを検出しました。
あなたのパソコンを60日間に渡り78250個ものウイルスから守ってきました。
もうすぐ無料期間が終わりますので、ウイルス対策有料ソフトを購入してください。
はぁ????なにいってんの?なんで、たった60日間で78250個ものウイルスが進入してくんだよ?
明らかに自作自演目的の業者の仕業じゃねえか?
犯人はおまえらだろが!この犯罪者かぶれの集団が!!
あちこちのサイトを開く度にコンピューターウイルスがパソコンにバンバン進入してくる。
おまえらな!自分で作ったサイトにコンピューターウイルスを混ぜて、他人の
何十万台ものパソコンを不調にさせたり故障させて、ウイルス対策ソフトを
高額で売りつけてまで儲けたいのかよ?
自転車屋が地域の自転車をパンクさせて回ったり、消防士が管轄地域で放火して
回るのと同じ犯罪をおまえらがやっているんだよ!
てめえらで新たなコンピューターウイルスを次々に作ってはバラ撒いては、ウイルス対策ソフトを
高値で売りつける自作自演商売しやがって!
この腐れ外道共が! 恥知らずの犯罪者共めが!
260:デフォルトの名無しさん
07/01/10 23:06:09
>254
でっかく「PL」とか「Perl」の文字が入ってるアイコンとか……。(聞いてない)
261:デフォルトの名無しさん
07/01/11 00:08:30
>>255
公式のらくだの絵をちょっと使って作ってみました。
>>256
あれはそのままでも結構かっこいいのですが、ちょっと抵抗があったので。。
>>260
一応Perlの文字を入れました。
どうもでした。
262:デフォルトの名無しさん
07/01/11 01:01:46
ファイルを最終行から順にさかのぼって読む方法ないですか?
seek , getc等で1文字単位で読むしかないかな?
263:デフォルトの名無しさん
07/01/11 01:09:57
>>262
つFile::ReadBackwards
264:デフォルトの名無しさん
07/01/11 01:15:30
>>263
ありがとうございます。
265:デフォルトの名無しさん
07/01/11 17:03:13
課題で
aを1文字の文字列、$bを数字とし、上の行から$aを$b回と表示していき、3角形を描くプログラム。
というのが出ています。
print "a? ";
chomp($a=<stdin>);
print "b? ";
chomp($b=<stdin>);
でaに+をいれ、bに5といれると
+
++
+++
++++
+++++
こんな感じで表示させたいです。
for文の入れ子でやると思うのですが、表記がわかりません。
ヒントだけでもいただけないでしょうか?
266:デフォルトの名無しさん
07/01/11 17:09:13
bに1を足してaをb個並べてプリントしたら改行を繰り返す
267:デフォルトの名無しさん
07/01/11 17:19:33
forの入れ子でやるとかいうと、もしかしたらこういう
おぞましいコードを期待してるかもしれないんだけど
for (my $line=1; $line <= $b; ++$line) {
for (my $num=1; $num <= $line; ++$num) {
print $a;
}
print "\n";
}
こういう風に簡潔にかける。
for my $num (1..$b) {
print $a x $num, "\n";
}
268:デフォルトの名無しさん
07/01/11 17:21:58
あと $a と $b は sort とかで使われるから使うなといっとけ
269:265
07/01/11 17:33:51
>>267
できました。ありがとうございます。
入れ子でわけわからない長いプログラムを作っていた自分がアホらしくなりましたw
もし入れ子でやるとしたら
入れ子の方の後半部分の
print $a;
}
print "\n";
}
はどういうことでしょうか?
270:デフォルトの名無しさん
07/01/11 17:34:37
すぐ答え出す奴ってなんなの・・・
271:デフォルトの名無しさん
07/01/11 17:54:51
漁師さん
272:デフォルトの名無しさん
07/01/11 18:12:08
こういう場合は普通、for文を使わずにトリッキーなコードを書いてあげるのが
お決まりなんだけどね。
273:デフォルトの名無しさん
07/01/11 18:21:32
print map { $a x $_ . "\n" } 1..$b;
274:デフォルトの名無しさん
07/01/11 18:58:59
チューニングした答え書いて分かるかよ。
いっそのことCPANで(笑
275:267
07/01/11 19:02:50
$a='+';$b=5;$t=0;
(${a}x(($b*$b+$b)/2))=~m{((??{++$t;".{$t}"}))(?{print"$^N\n"})}g;
こうですか?わかりません><
276:デフォルトの名無しさん
07/01/11 19:17:38
$^Nなんて使ってるのはじめてみた(笑)
277:デフォルトの名無しさん
07/01/11 19:26:01
(笑)なんて使ってるのはじめてみた(笑)
278:デフォルトの名無しさん
07/01/11 20:25:30
確かにな(藁
279:デフォルトの名無しさん
07/01/11 20:27:11
まぁ、ありえない
280:デフォルトの名無しさん
07/01/12 02:12:36
print map "$_¥n", unpack +( join '', map "A${_}X${_}", 1..$b ), $a x $b ;
不毛だ…
281:デフォルトの名無しさん
07/01/12 02:31:38
$_が半角文字"@"(0x40)を含むときのみデータを取得したいのですが、
以下のコードだと、$_が"病院"(0x95,0x61,0x89,0x40)とかの場合でも
データを取得してしまいます。
このような2バイト文字を取得しないようにするには
どの様に修正すればいいですか?
if ( $_ =~ "@" ) {
$data[$i++] = $_;
}
282:デフォルトの名無しさん
07/01/12 03:56:45
まず始めに。
当方、Perlは殆どいじった事がなく、
HSPやCを少々組んだ事がある程度の知識で質問しているため、
常識的な事や的外れな事を質問していたら申し訳ありません。
google等で調べても何やっても上手くいかなかったので、
どうか皆様の力をお貸し下さい。orz
CGIで生成したページから別サイトへのリンクをクリックした時に、
「このURLへアクセスします。よろしいですか?」
と言ったような確認ページを挟んでアクセスするようにしようとしています。
具体的書くと、元ページの別サイトへのリンクは、
xxx.cgi?url=URLリンク(www.xxx.com)
と言うように、リンク先のURLを<a>タグに埋め込んで自身のCGIに返すようになっています。
URL=の部分を取得し、そのまま確認ページの<a>タグに埋め込みたいのですが、
実際にやってみると?以降のURLエンコードされた部分が漢字や化けた文字として表示されてしまい、
綺麗なURLになってくれません。
渡されてきたURLを「URLリンク(www.xxx.com)」のように、
そのまま表示するにはどうしたらいいでしょうか?
一応書いておくと、スクリプトはUTF-8Nで書いています。
283:デフォルトの名無しさん
07/01/12 04:00:48
>1に全てが隠されているんじゃないだろうか。
284:デフォルトの名無しさん
07/01/12 04:08:40
>>283
orz
CGIはスレ違いだったんですね。本当にごめんなさい。
一日考え続けてて疲れてたのか、>>1を確認するのを失念してました。
向こうの初心者質問スレで質問してくる事にします。
スレ汚し失礼しました。
285:デフォルトの名無しさん
07/01/12 04:14:03
プログラム板から誘導されて来ました。
まず始めに。
当方、Perlは殆どいじった事がなく、
HSPやCを少々組んだ事がある程度の知識で質問しているため、
常識的な事や的外れな事を質問していたら申し訳ありません。
google等で調べても何やっても上手くいかなかったので、
どうか皆様の力をお貸し下さい。orz
CGIで生成したページから別サイトへのリンクをクリックした時に、
「このURLへアクセスします。よろしいですか?」
と言ったような確認ページを挟んでアクセスするようにしようとしています。
具体的書くと、元ページの別サイトへのリンクは、
xxx.cgi?url=URLリンク(www.xxx.com)
と言うように、リンク先のURLを<a>タグに埋め込んで自身のCGIに返すようになっています。
URL=の部分を取得し、そのまま確認ページの<a>タグに埋め込みたいのですが、
実際にやってみると?以降のURLエンコードされた部分が漢字や化けた文字として表示されてしまい、
綺麗なURLになってくれません。
渡されてきたURLを「URLリンク(www.xxx.com)」のように、
そのまま表示するにはどうしたらいいでしょうか?
一応書いておくと、スクリプトはUTF-8Nで書いています。
286:デフォルトの名無しさん
07/01/12 04:20:09
ぎゃー!!!
ありえない誤爆・・・。
ほんっとうにごめんなさい・・・。
287:デフォルトの名無しさん
07/01/12 04:23:33
>1に全てが隠されているんじゃないだろうか。
288:281
07/01/12 04:29:08
自己解決しました。
おさわがせしました。
289:デフォルトの名無しさん
07/01/13 00:44:28
>>281見てて、ふと、半角数字を全角数字に置換することはできても、半角英字を全角英字に置換することが難しいことに、
うーんうーん悩んでいた時のことを思い出した。
そういや、半角英字を全角英字に置換することってできるの?
290:デフォルトの名無しさん
07/01/13 00:53:02
use utf8やるとか。
291:デフォルトの名無しさん
07/01/13 01:42:35
EncodeもあるしUnicode::Japaneseもあるし。
292:デフォルトの名無しさん
07/01/13 22:09:16
WebProg板に書いたけど、こっちの方がふさわしそうなので
こちらでお聞きします。
キー入力を待って、キー入力があれば処理を次に進める、ということをやりたいのですが、
C言語でいうところの、getch() に相当する関数はないでしょうか?
293:デフォルトの名無しさん
07/01/13 22:10:05
4年前ぐらいまでPG兼SEをしていたのだが、
そのころと比べるとかなりPerlは寂れた?
294:デフォルトの名無しさん
07/01/13 22:34:22
>>292
Term::Getch
295:デフォルトの名無しさん
07/01/14 00:42:13
こんな配列 @result=("E:15000", "S:20000", "W:15000", "N:50000")を作りまして
ここから、1位=N、2位=S、3位=E、4位=W、という結果を出したいと思っています。
得点が同点の場合、E→S→W→Nの順で優先となります。
とりあえず、$rank{E}='15000',$rank{S}='20000',,,として、
if(($rank{E}>=$rank{S})&&($rank{E}>=$rank{W})&&($rank{E}>=$rank{N})){
#E=1位
#SとWとNで2位以下の判別
#何かと何かで3位と4位の判別
} elsif (($rank{S}>=$rank{W})&&.......
#S=1位
#EとWとNで2位以下の判別
#何かと何かで3位と4位の判別
}elsif(..
と、やり始めましたが、とてつもない作業になりそうです。
何か、よい解決法がございましたらご示唆お願いします。
296:デフォルトの名無しさん
07/01/14 00:49:18
普通にソートすりゃいいやん
@result= sort {(split/:/,$b)[1]<=>(split/:/,$a)[1]} @result;
297: ◆TWARamEjuA
07/01/14 01:04:42 BE:1633853-BRZ(6701)
とん・なん・しゃー・ぺー♪
298:デフォルトの名無しさん
07/01/14 01:06:36
use strict;
# こんな配列
my @results = ("E:15000", "S:20000", "W:15000", "N:50000");
# 得点が同点の場合の順
my %prio_of = (
E => 0, S => 1, W => 2, N => 3,
);
my @s_results = map { $_->[0] }
sort { $b->[2] <=> $a->[2] || $prio_of{$a->[1]} <=> $prio_of{$b->[1]} }
map { [ $_, (split/:/=>$_)] } @results;
299:デフォルトの名無しさん
07/01/14 01:23:07
数値として使う予定の変数を、文字列で宣言するのって確か非効率だよね。
随分長い間Perlから離れてるので間違ってるかも知れないけど
$foo = '2000';
と文字列にしておいて、その後で $foo を数値として使った場合、
スカラ変数の構造体は、
文字列型のものから、数値も文字列も両方入る奴に切り替わる。
構造体切り替えの手間もあるし、構造体のサイズも大きくなるから非効率
…だったような気がする。
300:295
07/01/14 01:43:35
すばやいご提示、ありがとうございます。
>>296 様
すみません、説明が不足していました(ということに気づくのに、いただいた式を
眺めながらかなり時間がかかりました・・・)。実は、EやSが変数の中に出てくる
順番は毎回変わる可能性がありました。申し訳ありません。
>>298 様
欲しい結果が出せました。ただ、内容の理解には私にはまだまだ時間がかかりそうです・・
なんとか少しずつ、吟味していきたいと思います。
>>297 様
わかりましたか。そのとおりです。
皆様、すばらしいご教授、どうもありがとうございました。
301:デフォルトの名無しさん
07/01/14 01:59:22
>>299
perl は型はなしでしょ。
$foo = '2000';
も
$foo = 2000;
は同じでしょ。
302:デフォルトの名無しさん
07/01/14 02:13:38
>>301
つ [perlguts]
つ [Devel::Peek]
303:デフォルトの名無しさん
07/01/14 02:45:43
>>302
もちっと教えてくれんかのう。
perldataには
「あるスカラー変数が、“文字列”型、“数値”型、“ファイルハンドル”型、
あるいはその他の型であるように宣言する方法はありません。」
とあるかんだけど、それとは違うレベルで何かあるのか?
304:デフォルトの名無しさん
07/01/14 03:03:20
提示されている情報ぐらい見なさい。
> Double-Typed SVs
> スカラー変数は通常、整数、倍精度、ポインタ、リファレンスのうちの いずれか一つの型をとります。Perl は実際のデータに対して、
> 蓄積されている型から要求されている型へ、自動的に変換を行ないます。
305:265
07/01/14 03:39:50
>>275 を提出したんですが、授業後
せんせから呼び出し受けました。
306:303
07/01/14 03:57:55
>>304
どうもありがとう。
文脈によってperl内部で数値と評価されたり文字列として評価されたりすることは分かっています。
しかし、シンタックス上
$foo = '2000';
と
$foo = 2000;
に違いがあるとは読み取れませんでした。
#$foo = '2000' . '';
#と
#$foo = 2000 + 0;
#が違うのはわかりますよ。
307:303
07/01/14 04:24:03
試してみれば良いんだね。
$foo = 2000;
の場合数値コンテキストになるんだ。(そりゃそうか)
308:デフォルトの名無しさん
07/01/14 13:40:27
>>305
ワロタ
なんていわれたの?w
309:デフォルトの名無しさん
07/01/14 14:38:20
先生が読めなかったか
先生がこのスレを見ていたか
どっちかな
310:デフォルトの名無しさん
07/01/14 14:54:53
>>289
>半角数字を全角数字に置換することはできても、半角英字を全角英字に置換することが難しいことに、
>うーんうーん悩んでいた時のことを思い出した。
>そういや、半角英字を全角英字に置換することってできるの?
次スレのテンプレ予定の>>115に忠実に従えば、
tr/a-zA-Z/a-zA-Z/
でできる。
311:デフォルトの名無しさん
07/01/14 14:58:44
print "@{[1+1]}", "${\(1+1)}";
こういうテクニック(?)を思い出したんですけど、どこに書かれていたものでしょうか。
312:デフォルトの名無しさん
07/01/14 15:01:00
>>306
use Devel::Peek;
$foo1 = '2000';
Dump $foo1;
$foo2 = 2000;
Dump $foo2;
↓
SV = PV(0x363bc) at 0x18aef9c
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x3dc2c "2000"\0
CUR = 4
LEN = 8
SV = IV(0x18a68b8) at 0x18af02c
REFCNT = 1
FLAGS = (IOK,pIOK)
IV = 2000
313:299
07/01/14 20:42:44
やっぱりPVIVになった。どうやら >>299 に書いた記憶通りだったみたい。
use Devel::Peek;
$foo = '2000';
Dump $foo;
$foo += 1;
Dump $foo;
SV = PV(0x1801660) at 0x180b5a8
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x300c70 "2000"¥0
CUR = 4
LEN = 5
SV = PVIV(0x1801a20) at 0x180b5a8
REFCNT = 1
FLAGS = (IOK,pIOK)
IV = 2001
PV = 0x300c70 "2000"¥0
CUR = 4
LEN = 5
この状態でFLAGSをC側からいじると、
文字列として表示した時と、数値として使った時で別の値を出すスカラ
とか作れちゃうんだよね。
314:デフォルトの名無しさん
07/01/14 22:35:50
>>313
実はoverloadがあればxsを使わずともそういうのが作れちゃったりするのですよ。
URLリンク(search.cpan.org)
use Contextual::Return;
$contextual = NUM { 10 } STR { 'abc' };
print $contextual . '';
print $contextual + 0;
315:314
07/01/14 22:43:39
ああ、失敗。よく考えたら流石に代入は無理だな。…Tie使ったら或いは出来たりしそうな気もしないでもない。
313はスカラを作ると言うことで代入した別の値を保持まで出来たりするのかな
316:デフォルトの名無しさん
07/01/14 23:55:02
Scalar::Utils の dualvar は?
317:デフォルトの名無しさん
07/01/14 23:56:11
ごめん、Scalar::Util だった。
URLリンク(search.cpan.org)
318:デフォルトの名無しさん
07/01/14 23:59:37
>実はoverloadがあればxsを使わずともそういうのが作れちゃったりするのですよ。
スルーしてた。xs を使って実現したのが Scalar::Util の dualvar ってことっすね。
319:デフォルトの名無しさん
07/01/15 00:09:24
dualvar でスカラ作ってみたけど、
作った後で代入し直したら、片方だけ(数値だけ or 文字列だけ)になっちゃった。
ということは、xsでフラグいじって IOK, POK 両方立てても
代入したら片方になっちゃうということか。
オブジェクトにして代入まで見張れば良いんだろうけど。
320:デフォルトの名無しさん
07/01/15 01:57:29
webサーバをan httpdからapacheに変更したところ文字化けする部分が出てきました。
method=getで受けとった部分が文字化けしてしまいます。method=postは大丈夫でした。
よろしくお願いします。
↓の一番下の部分も参考にしましたが直りませんでした。
URLリンク(tech.bayashi.net)
apache perlは↓のサイトを参考に構築してあります。
URLリンク(www.y-kit.jp)
------------------------------
環境
Apache/2.0.59 (Win32) PHP/5.1.4
------------------------------
コード例
require './jcode.pl';
#GET用
$myindata=$ENV{'QUERY_STRING'};
#POST用
#read( STDIN, $myindata, $ENV{ 'CONTENT_LENGTH' } );
#$myindata =~ tr/+/ /;
#$myindata =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge;
&jcode'convert( *value, 'sjis' );
print "Content-type: text/html\n\n";
print $myindata;
------------------------------
getデータ
URLリンク(localhost)あいうえお&a=11
表示データ
name=a&mail=&message=???¢???|?¨&ip=&a=11
321:デフォルトの名無しさん
07/01/15 02:03:07
>1に全てが隠されているんじゃないだろうか。
322:デフォルトの名無しさん
07/01/15 12:39:35
以前使っていたサーバでdbmファイルを使っていたのですが、
そのまま別のサーバに移動したら読み込めなくなりました。
dbmファイルは.dirと.pagの2つじゃない方(1つのファイル)です。
古いサーバはもう使えません。新しいサーバでdbmファイル
を読む方法はないでしょうか…。
323:デフォルトの名無しさん
07/01/15 14:43:05
>>322
質問する時はまず環境を説明しろ!
(古い方と新しい方それぞれのOSの種類とバージョン,Perlのバージョン)
あと、読めなくなったってのはどんなエラーメッセージが来てるのかも報告汁
324:デフォルトの名無しさん
07/01/15 19:18:22
>>322
ヒントになるかわからんが
NDBM_File
DB_File
GDBM_File
SDBM_File
ODBM_File
325:320
07/01/15 20:46:35
別のとこで質問してきます。
326:322
07/01/15 20:58:26
読めなかったと思ったら読めました。お騒がせしました。
dbmファイルはテキストなどに書き出しておかないとバイナリでサーバを移しても
読めないのだと思っていました。dbmopen()で読み書きしていたので、どの
形式のDBMかわからなかったのです。
327:デフォルトの名無しさん
07/01/16 05:56:00
perlerのエロイ人教えて!ワッフルワッフル
指定されたディレクトリのディレクトリハンドルを開いて
ディレクトリ内のファイル名を取得するスクリプトを書いたのですが
名前が長いファイルがあるとそのファイルと、それ以降のエントリが
ディレクトリハンドルから取得できないんだけど
なんで?これどうすれば回避できる?
環境: Windows XP + ActivePerl5.8.8 build819
328:デフォルトの名無しさん
07/01/16 07:04:48
esperのエロイ人が来て
お前の書いたスクリプトを透視した上で回答してくれるのを待つことだ
329:327
07/01/16 10:55:47
>>328
再現スクリプトを下記に示します。
DirHandle以外にopendirでディレクトリハンドル開いたり、
globを使ってみたけど結果はおんなじでした。
----
#!/usr/local/bin/perl
use strict;
use utf8;
use warnings;
use FindBin;
use DirHandle;
use Data::Dumper;
my $dh = DirHandle->new($FindBin::Bin) or die $!;
my @entries = $dh->read;
print Dumper(\@entries);
__END__
----
330:デフォルトの名無しさん
07/01/16 10:58:29
名前が長いファイルの例は何ですか?
331:デフォルトの名無しさん
07/01/16 11:02:27
質問します。
foreach( sort(glob("*")) ){
if(-d){
@local_dir = (@local_dir,$_) ;
}elsif(-f){
@local_file = (@local_dir,$_) ;
}else{
print "Not Support Format -> $_\n" ;
}
}
ファイルとディレクトリに分けたいのですが、
ローカルだと上記のようにできますが、(他にスマートなやり方があるかもしれませんが。。)
ftp上のファイルを区別する方法はありますでしょうか。
以下ではどちらも同じファイルを取得してしまいます。
use Net::FTP;
my $ftp = Net::FTP->new($host);
$ftp->login($user, $pass);
foreach( $ftp->ls("./") ){
print "$_\n" ;
}
foreach( $ftp->dir("./") ){
print "$_\n" ;
}
$ftp->quit;
332:327
07/01/16 11:19:46
>>330
全角数字0から9を繰り返すのを160文字 + .txt
のファイル名を用意したら再現しました。
全角数字100文字の場合はファイル名が取得できました。
パスは
D:\test
で実験しました。
95系は絶対パスで255byte以下、
NT系は絶対パスで255文字以下と認識してるのですが
このへんの絡みですかね?
333:327
07/01/16 11:26:39
>>331
Net::FTP::Fileにisfileとisdirってメソッドあるよ。
インスコするかインスコできないならCPANでソース閲覧して参考にすればいけるのでは
334:327
07/01/16 12:18:54
似たケースを見つけた。
ActivePerlのバグ?
URLリンク(www.namazu.org)
335:デフォルトの名無しさん
07/01/16 12:31:39
バグではなく仕様。
WinAPIでも使っとけ。
336:331
07/01/16 13:23:32
>>333
出来ましたー。
最初ソース見て作ろうと思いましたが
面倒臭くなって結局インスコしましたw
ありがとうございます。
337:327
07/01/16 13:44:46
>>336
もめでとう! こっちはいまだにはまり中 orz
>>335
バグじゃなくて仕様なの?
ちなみにWin32::APIを使ってみたけどなぜか取得できない。。。
338:327
07/01/16 13:51:26
Win32::APIを使った再現スクリプト
----
#!/usr/local/bin/perl
use strict; use utf8; use warnings;
use Data::Dumper; use Encode; use File::Spec; use FindBin; use Win32::API;
Win32::API::Struct->typedef('FILETIME', qw(
DWORD dwLowDateTime; DWORD dwHighDateTime;)) or die $!;
Win32::API::Struct->typedef('WIN32_FIND_DATA', qw(
DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow;
DWORD dwReserved0; DWORD dwReserved1; TCHAR cFileName[260];
TCHAR cAlternateFileName[14];)) or die $!;
my $FindFirstFile = Win32::API->new('kernel32', 'FindFirstFile', 'PS', 'N') or die $!;
my $FindNextFile = Win32::API->new('kernel32', 'FindNextFile', 'NS', 'I') or die $!;
my $FindClose = Win32::API->new('kernel32', 'FindClose', 'N', 'I') or die $!;
my $path = File::Spec->catdir($FindBin::Bin, '*');
my $FindData = Win32::API::Struct->new('WIN32_FIND_DATA') or die $!;
my $hFind = $FindFirstFile->Call($path, $FindData);
$hFind == -1 and die $!;
my @list = ($FindData->{cFileName});
push @list, $FindData->{cFileName} while $FindNextFile->Call($hFind, $FindData;
$FindClose->Call($hFind);
print Dumper(\@list);
__END__
339:327
07/01/16 13:56:10
書込み時に改行多いって怒られたから改行を削ってたら
FindNextFileの閉じ括弧までまちがえて削っちゃった orz
>>338のソースは
×push @list, $FindData->{cFileName} while $FindNextFile->Call($hFind, $FindData;
○push @list, $FindData->{cFileName} while $FindNextFile->Call($hFind, $FindData);
でお願いします。 m(_ _)m
340:デフォルトの名無しさん
07/01/16 13:56:31
この関数の ANSI 版では、名前は最大 MAX_PATH 文字に制限されています。
この制限をほぼ 32,000 ワイド文字へ拡張するには、この関数の Unicode 版を呼び出し、
パスの前に "\\?\" という接頭辞を追加してください。
詳細については、MSDN ライブラリの「File Name Conventions」(ファイル名の規則)を参照してください。
341:327
07/01/16 14:45:03
>>340
どもです、自分もおんなじ情報に行き当たりました ;p
URLリンク(mag.autumn.org)
Find(?:First|Next)FileじゃなくてFind(?:First|Next)FileWを使えってことなんですね。。。
ディレクトリのファイル一覧を取得する部分だけで苦労するな。。。
342:デフォルトの名無しさん
07/01/16 14:51:49
>>327
URLリンク(msdn2.microsoft.com)
typedef struct _WIN32_FIND_DATA {
...
TCHAR cFileName[MAX_PATH];
343:デフォルトの名無しさん
07/01/16 23:00:35
作ってもらった
__
| |
| | ___ ___
| | . / | __ _____ / _ \
| | / /| | / / / ____/ / / > l
| |. / / .| |. / / / /.. _ /  ̄ /
| |/ / | |/ / /  ̄ ̄_/ / \
| /. | / / / ̄ ̄ __ / / ̄ ̄> |
| / |___/ ./  ̄ ̄ ̄ / /  ̄ ̄ /
 ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ _____ ___ ___ ___
______ /__ __/ [][] _| |_| |__ _| |_
| ___ \ / / | _ | |_ レ'~ ̄|
| | \ l | |_  ̄| | / / / /| |
| |____/ / \__| | |  ̄ /_ /. | |_
| ____/ ___ __ __/ヽ |_|. |__|. \/
| | /`、_/_/ / _ ヽ / _ /
| | ヽ / | l l l | l l l
| | | l ヽ  ̄ / ,ヽ  ̄ /
 ̄  ̄  ̄ ̄ / __ ヽ
| l l l
ヽ  ̄ ̄ /
~ ̄ ̄~
344:デフォルトの名無しさん
07/01/16 23:04:28
ちょっとでかいな
345:327
07/01/17 01:05:42
ActivePerlではうまくいかないみたい。。。
URLリンク(aspn.activestate.com)
346:327
07/01/17 06:15:16
URLリンク(aspn.activestate.com)
こちらのやり方で取得出来ました。
何度も自己レスすみませんでした m(_ _)m
347:デフォルトの名無しさん
07/01/17 18:25:14
Perl 覚えたらこんなもの作れるようになりました。
█ █ █ █ █▀▀▀▅
▀▅ ▅▀▅ ▅▀ ▅▅▅ █▅▅▅ █ █ ▅ ▅ ▅▅▅ ▅▅▅▅
█ █ █ █ █▅▅▅█ █ █ █▀▀▀ █▀ █ █ █▅▅█
▀▅▀ ▀▅▀ █ ▅ █ █ █ █ █ █ █▅▅▅
▀ ▀ ▀▀▀ ▀▀▀▀ ▀ ▀ ▀▀▀ ▀▅▅▅▀
▅▅▅▅▅▅ ▅ ▅ █
▀▀▀▀ ▅▀ ▅ █ ▅▅▅█▅▅ ▀▀█▀▅▀▀▀▅
█ █ ▀ ▀▀▀█ █ ▅█▀ █
█ █ ▅▅▅▀ ▅▀█ █
▀▅ █ ▀ █ █ ▅
▀▀▀ ▀ ▀ ▀
348:デフォルトの名無しさん
07/01/17 19:19:36
URLリンク(perldoc.jp)の
どうすればファイルハンドルをサブルーチンに局所化できますか?~
の項目にあるサンプルコードの
local $_; # ← とても重要
の意味は一体なんでしょうか。
349:デフォルトの名無しさん
07/01/17 19:31:19
sub owata {
# local $_;
$_ = "\(^o^)/";
}
$_ = "/(^o^)\";
owata;
print;
local $_; の行をコメントアウト/インして実行してみよう!
350:デフォルトの名無しさん
07/01/17 19:48:51
ありがとうございます。でも余計にわからなくなったorz
実はこんなコード書いて試してみたんですがlocal $_;あっても無くても同じように動くんですよね
# lstはファイル名のリスト
open (FH, '< lst') or die;
while (<FH>) { print; &localtest }
close FH;
sub localtest
{
local *FH;
open (FH, $_) or die;
#local $_;
while (<FH>) { print }
}
何が違うのかも教えていただけたらうれしいです。
351:デフォルトの名無しさん
07/01/17 19:58:12
$_はグローバルだから他で使われてるかもしれない。特に
左辺値でないもののaliasだったりすると値を書き換えることも
できないしな。
foreachのときは暗黙にlocalにしてくれるけど。
352:デフォルトの名無しさん
07/01/17 21:12:34
>>350
localtest 呼び出しの後 $_ は書き換わってるけど、
すぐに次のループに入るので問題がないだけ。
while (<FH>) { print "begin: $_"; &localtest; print "end: $_" }
とかやってみると、違いがわかると思うよ。
353:350
07/01/17 23:02:32
ありがとうございます。ようやく理解できました
しかし350のコードはアホですね…何をやっているんだか
この分じゃ他にもいろいろ勘違いしていることありそうで怖いです。
とりあえずほとんど理解せず使ってる型グロブをもうちょっと調べてみよう…
354:デフォルトの名無しさん
07/01/18 00:01:12
間接的なファイルハンドル使おうよ
open my $fh, '<', 'filename' or die;
355:デフォルトの名無しさん
07/01/18 02:29:27
FileHandleやIO::Fileって使わないの?
356:331
07/01/18 09:36:42
331で質問したモノです。
また壁にぶち当たりました。
ftpしたあとのファイル、ディレクトリの日付、サイズを取得したいので調べてましたが
use Net::FTP::File;のNet::FTP::fstatは作りかけのようで使用出来ませんでした。
$ftp->dir(./)で拾って日付を抜こうと思いましたが、日本語環境と英語環境で
表示が異なるので断念しました。
何か取得方法はないでしょうか。
use Net::FTP;
my $ftp = Net::FTP->new($host);
$ftp->login($user, $pass);
357:デフォルトの名無しさん
07/01/18 09:45:05
>>356
> 何か取得方法はないでしょうか。
マニュアルを見ると分かるんじゃないでしょうか
358:デフォルトの名無しさん
07/01/18 12:07:32
Perlで文字列にunicodeが含まれているかどうかを判断するにはどうすればいいですか?
359:デフォルトの名無しさん
07/01/18 12:20:56
「文字列にunicodeが含まれている」という言い方があいまい杉。
あるバイト列の文字コードがunicode由来のものであることを知りたいのか
(エンコーディングの仕方が何通りもあるので)
→ Encode::Guess。ただし完全な判定は無理。
UTF-8フラグが立った文字列であることを知りたいのか
→Encode::is_utf8(あるいはutf8::is_utf8)
それともぜんぜん別のことなのか
360:デフォルトの名無しさん
07/01/18 12:45:35
>>359
unicode由来のもであるかどうかです
それと環境はPerl5.0でJcode.plです
361:356
07/01/18 13:54:08
調べていたらNet::FTPのmdtmが使えそうだったので
書いてみましたがエラーが出ました。
使い方が間違えているのでしょうか。
$host = "***" ;
$user = "***" ;
$pass = "***" ;
use Net::FTP;
my $ftp = Net::FTP->new($host);
$ftp->login($user, $pass);
foreach($ftp->ls()){
$aaa = $ftp->mdtm($_) ;
print "$aaa\n" ;
}
362:デフォルトの名無しさん
07/01/18 16:20:51
>>361
Net::FTPの使い方としては間違ってないよ。
エラーってnot a plain fileのことか?
とりあえずエラーの理由知りたけりゃDebug=>1設定しなさい。
363:デフォルトの名無しさん
07/01/18 16:24:58
>>360
jcode.pl は Unicodeには対応していないはず。
Perl 5.0 なんて時代遅れなもの使うのやめたら?
364:デフォルトの名無しさん
07/01/18 16:29:49
時代は6だな
365:361
07/01/18 16:36:17
---------------------------------------------------------------------------
#!/usr/local/bin/perl -w -- # -*-Perl-*-
use strict;
use warnings;
use Net::FTP;
my $host = "txfs02" ;
my $user = "g-fan" ;
my $pass = "fan" ;
my $aaa ;
my $ftp = Net::FTP->new($host);
$ftp->login($user, $pass);
foreach($ftp->ls()){
$aaa = $ftp->mdtm($_) ;
print "$aaa\n" ;
}
---------------------------------------------------------------------------
↑これを実行すると一つのファイルにつき↓このメッセージが出ます。
色々試してはいますが詰まっていますorz
Use of uninitialized value in concatenation (.) or string at bbb.pl line 15.
366:デフォルトの名無しさん
07/01/18 16:47:09
>>365
>Use of uninitialized value in concatenation ...
何も無いものをprintしようとしたからwarningsが出たわけ
print "$aaa\n";
を
print "$aaa\n" if $aaa;
で
367:361
07/01/18 16:52:50
>>366
そうなんです。
全てのファイルのmdtmがundefになってるんですよね。
だいたい”foreach($ftp->ls()){”でファイルを拾っているので
ファイル名を間違えているとかそういうのは無いはずなんですが。
368:デフォルトの名無しさん
07/01/18 17:03:16
Debug=>1にすると俺の環境では
ディレクトリはエラーでnot a plain fileを返してる(undef)
ファイルはtimeを返してる
369:デフォルトの名無しさん
07/01/18 17:07:02
>>367
> ファイル名を間違えているとかそういうのは無いはずなんですが。
「はず」じゃなく確認しる。
とはいえ、手元で動かしてみたところ、同じエラーが出て失敗したり
成功したりする。なんじゃらほい。
370:デフォルトの名無しさん
07/01/18 17:15:03
>>369
> とはいえ、手元で動かしてみたところ、同じエラーが出て失敗したり
> 成功したりする。なんじゃらほい。
急いで捕捉すると、テストに使った対象ftpサーバが、複数個をラウンドロビン
していたようた。要するに、ftpサーバソフトウェアによって成功したり
失敗したりしていたようだ。
371:361
07/01/18 17:17:49
>>368
すみません。
Debug=>1の意味が理解できていませんでした。
今調べてDebug=>1で流したらこんなメッセージになっています。
Net::FTP=GLOB(0x15ecd4)>>> MDTM xxx.log
Net::FTP=GLOB(0x15ecd4)<<< 500 'MDTM xxx.log': command not understood.
Use of uninitialized value in concatenation (.) or string at bbb.pl line 16.
MDTMというコマンドがないみたいですが↓このファイル見たら_MDTMならあるけど
MDTMはありませんでした。
/usr/local/lib/perl5/5.8.6/Net/FTP.pm
>>369
調べましたがちゃんと見れていました。
372:デフォルトの名無しさん
07/01/18 17:36:30
>>371
> Net::FTP=GLOB(0x15ecd4)>>> MDTM xxx.log
> Net::FTP=GLOB(0x15ecd4)<<< 500 'MDTM xxx.log': command not understood.
> Use of uninitialized value in concatenation (.) or string at bbb.pl line 16.
これはひどい(笑) MDTMコマンドが実装されていないのだろうか。
手元でやった例だと
失敗例
Net::FTP=GLOB(0x8212d38)>>> MDTM pub
Net::FTP=GLOB(0x8212d38)<<< 550 Could not get file modification time.
成功例
Net::FTP=GLOB(0x8212d38)>>> MDTM pub
Net::FTP=GLOB(0x8212d38)<<< 212 20060419172149
となります。
373:デフォルトの名無しさん
07/01/18 17:45:44
今ぐぐってみたら
MDTMはFTPの拡張仕様だから対応してない鯖が多いみたいだ
MDTM対応してない鯖は気合でLISTの結果を解析するしかなさそうな感じ
374:デフォルトの名無しさん
07/01/18 18:02:46
LISTのフォーマットもまちまちだから、本当に「気合」が必要だなw
375:デフォルトの名無しさん
07/01/18 18:56:34
普通のftpクライアントはどうやってリスト作成しているんだろうね・・・
#暇なときにffftpのソース眺めてみよう
376:デフォルトの名無しさん
07/01/18 19:01:19
IEもLISTを解析してるらしい
URLリンク(support.microsoft.com)
かなり大変そうだな・・・
377:デフォルトの名無しさん
07/01/18 19:37:54
CPANを漁ったらこんなのがあった。使い物になるかな
URLリンク(search.cpan.org)
378:デフォルトの名無しさん
07/01/18 20:47:53
>>375
悲惨なものよ
379:デフォルトの名無しさん
07/01/19 00:21:38
ファイル交換ソフトの利用履歴を調査するソフト「Winny特別調査員」
URLリンク(internet.watch.impress.co.jp)
>Winny特別調査員は、フォレンジック技術を応用した検査により、Winnyなどのファイル交換ソフトを利用した最終日時を調査するソフト。
これ、デモ版とはいえPerl(PAR)で書かれている珍しい製品
exeの拡張子をzipにして解凍すればソースを取り出すことが可能。
このソースを見てフォレンジック技術と"売り物"のクォリティを感じろ、おまいら
380:デフォルトの名無しさん
07/01/19 00:33:42
>>379
@KINTAMA_STRとかあってワロス
381:361
07/01/19 09:54:34
>>373
拡張なんですね。。
>>372->>380
$ftp->dir("./")で取得するとサーバによってこんな風になるんですよね。
表示が英語か日本語だけならまだ対応出来るんですが
日本語で去年のファイルになると時間が年表記になって
時間が取り出せないorz
drwxrwxr-x 2 user group 1024 Dec 5 00:03 dir_name
drwxr-xr-x 5 user group 512 3月 29日 2006年 dir_name
何か他に日付とサイズ取得できるのないかな。
382:デフォルトの名無しさん
07/01/19 10:18:31
>>381
> 日本語で去年のファイルになると時間が年表記になって
> 時間が取り出せないorz
いや、UNIXのlsコマンドの詳細表示は、半年以上過ぎるとそういう表示になる
仕様だというだけ。それを反映しているのでしょう。英語でもそうなるはず。
っていうか、そうなるのがある、か。
383:デフォルトの名無しさん
07/01/19 13:16:05
>>379
これぐらいの物ならPerlで作らなかった方が良かったのにね。。
コメントとテストコードが残っている事以外に関して言えば
別に酷いコードじゃないと思うけど、フォレンジック技術について言えば;;
文字連結が好きだって事は分かった。
384:デフォルトの名無しさん
07/01/19 14:01:44
> 別に酷いコードじゃないと思うけど、
マジで?
385:デフォルトの名無しさん
07/01/19 14:07:39
112 :番組の途中ですが名無しです [sage] :2007/01/17(水) 15:23:40 ID:p3fP2iOG0
sub pf_check_p2p{
if ($_[0]=~/winny\.exe/i){add_ctime($_[0],$WINNY,"WINNY");}
if ($_[0]=~/winnyp\.exe/i){add_ctime($_[0],$WINNYP,"WINNYP");}
if ($_[0]=~/Share\.exe/i){add_ctime($_[0],$SHARE,"SHARE");}
if ($_[0]=~/PERFECT DARK\.EXE/i){add_ctime($_[0],$PD,"PD");}
if ($_[0]=~/cabos\.exe/i){add_ctime($_[0],$CABOS,"CABOS");}
if ($_[0]=~/limewire\.exe/i){add_ctime($_[0],$LIMEWIRE,"LIMEWIRE");}
if ($_[0]=~/BITTORRENT\.EXE/i){add_ctime($_[0],$BIT,"BIT");}
if ($_[0]=~/BITCOMET\.EXE/i){add_ctime($_[0],$BIT,"BIT");}
}
(;^ω^)
139 :番組の途中ですが名無しです [sage] :2007/01/17(水) 15:35:19 ID:p3fP2iOG0
なんか製品版も同じな気がする…
だってp2ptest.plの30行辺り見ると…
my $kin="\x5b\x90\x6d\x8b\x60\x82\xc8\x82\xab\x83\x4c\x83\x93\x83\x5e\x83\x7d\x5d";
ついでにこれってShift_JISで見ると [仁義なきキンタマ] なんだよね
386:383
07/01/19 14:20:43
>>384
苦なく読めるという点で。改良点を挙げようとすればそりゃ出てくるがな。
387:デフォルトの名無しさん
07/01/19 15:04:42
>>385
これだけ見ても何が面白いのかワカランだろ。まぁ、十分ヘタクソなコードだけど。
これが商用のソフトのファイル共有ソフトの検出処理だってのが凄い。
URLリンク(72.14.253.104)
388:デフォルトの名無しさん
07/01/19 15:15:48
Prefetchに気づいてる香具師が一人しかいないそのスレも大分痛い
389:デフォルトの名無しさん
07/01/19 15:37:59
>>388
ニュー速だぞ?w
390:デフォルトの名無しさん
07/01/19 16:29:43
>>379
調査員が、PC操作してる俺の隣に座って
監視するわけじゃないのか。 じゃイラネ。
391:デフォルトの名無しさん
07/01/19 16:41:48
人件費が馬鹿にならんだろそれじゃ
392:デフォルトの名無しさん
07/01/19 17:08:45
マwジwレwwスwww
393:デフォルトの名無しさん
07/01/19 17:12:31
391に突っ込むって
どんだけ2ch初心者なんだよ
394:デフォルトの名無しさん
07/01/19 17:19:27
2chw初w心ww者www
395:デフォルトの名無しさん
07/01/19 17:56:46
はいはい
vipに帰りな
396:デフォルトの名無しさん
07/01/19 18:00:16
はwいwwはwwwいwwwww
いい加減自演疲れただろうパトラッシュ
397:デフォルトの名無しさん
07/01/19 19:04:24
>>393
熟練の方ですか?wwww
398:デフォルトの名無しさん
07/01/19 19:05:06
ばばばばばばっ
w w _ _ w w
w ヽ(・ω・)ノ w w
w .(( ノ( )ヽ )) w
wwwwwwwww..............┛┗...........wwwwwwwww
399:デフォルトの名無しさん
07/01/19 20:11:44
言い負けてからが長い
400:デフォルトの名無しさん
07/01/20 00:53:18
2chViewer ●にログインして、過去ログをひたすら(ウェイトは挟みつつ)取得するスクリプトを書いたのですが、
●ログインは出来るものの、肝心の過去ログが取得できません。gzip圧縮された「-ERR もう つかえません」と言うメッセージが取得されるだけです。
●アカウントそのものは既成の専用ブラウザ(OpenJane 0.1.12.6b)で生きていることを確認しています。
コーディングの問題なのか、2chの●過去ログ取得の仕様にあっていないための不都合なのか、自分では切り分けが出来ませんでした。
ソースはこれです。 URLリンク(sub.jetabbs.org) (コメント・メッセージがキモくてごめんなさい)
スレ違いでしたら誘導をお願いします。
401:デフォルトの名無しさん
07/01/20 15:39:22
>>400
ソースは読んでいないけど、
それって、Perlの問題というより、2ちゃんねるの認証の問題だね。
専用ブラウザ以外のソフトで過去ログを取得しようとすると、拒否する
ように設定していると聞いた覚えがある。
あとは、こちらのスレで聞いたほうがいいよ ↓
monazilla Part 5
スレリンク(tech板)l50
402:デフォルトの名無しさん
07/01/20 15:51:03
専用ブラウザでのやりとりをキャプチャして同じリクエスト投げるようにすればいいんじゃね?
暗号化されてたらシラネ
403:401
07/01/20 15:51:23
>>400
あと、Snifferというソフトを使って、専用ブラウザが出しているIPパケットと、
自作のスクリプトが出しているIPパケットとを比べれば解決するかもしれないよ。
404:デフォルトの名無しさん
07/01/20 22:02:59
use threads;
use threads::shared;
# 終了の合図
my $kill:shared = 0;
# スレッド作成
my $thread = threads->new(\&loop);
処理...
$kill = 1;
$thread->join;
sub loop {
while (!$kill) {
処理...
sleep(60);
}
}
少し長くてすみません…。
マルチスレッドでwaitを挟みつつ処理を行い
任意のタイミングで終了させるプログラムを組んでいるのですが、
このコードだと終了用の変数をセットしてから処理が戻るまで60秒もかかってしまいます。
何かいい方法はないでしょうか
よろしくお願いします。
405:デフォルトの名無しさん
07/01/20 22:24:10
>>400
UAをMonazilla/1.00にするとか
406:デフォルトの名無しさん
07/01/20 22:47:00
>>404
threads::sharedにcond_ナントカというのがいくつかあるので
よく説明読め。たぶんお前が求めているものはそれだ。
407:デフォルトの名無しさん
07/01/20 22:55:23
>>406
ありがとうございます
調べてみます
408:デフォルトの名無しさん
07/01/20 23:33:03
Perl Hacks
URLリンク(www.amazon.co.jp)
これ今日発売だけど買った奴居る?
中身どうですか?
409:デフォルトの名無しさん
07/01/20 23:57:59
そんな本が出るこそさえ知らなかったわさ
410:デフォルトの名無しさん
07/01/21 00:14:29
>>406
cond_timedwait
cond_signal
を併用する事でできました
昨日からずっと悩んでいたので助かりました
ありがとうございました
411:デフォルトの名無しさん
07/01/21 00:19:55
>408
O'Reillyで目次見れるから、だいたい判断つくんじゃない?
俺は英語版持ってるから買わないけど。
URLリンク(www.oreilly.co.jp)
412:デフォルトの名無しさん
07/01/21 00:54:41
第1章の1項ってテクニック?
413:デフォルトの名無しさん
07/01/21 01:23:23
1章2章はツールの話だろ
414:デフォルトの名無しさん
07/01/21 01:24:15
「firefoxから簡単にCPAN検索できるようにする」だからテクニックといえばテクニックだろ。
俺はsleipnirもfirefoxもCPAN検索できるようにしてある。
あとはローカルにppmリポジトリを立てればすごく便利。
415:デフォルトの名無しさん
07/01/21 05:57:20
>>408
買った買った。ペラペラとめくってからほぼ衝動買い。
お前も買え。
416:デフォルトの名無しさん
07/01/21 12:10:31
すみません
@week = ("Sun","Mon","Tue","Wed","Thr","Fri","Sat");
$i = 0;
for($i=0; $i <= 7; $i++){
print $week[${i}];
}
このソースで-wオプション付けて実行すると
Use of uninitialized value in print at ./hairetu.pl line 7.
と警告が出るのですが何故でしょうか?
見たところ変数はきちんと初期化していると思うのです。
417:デフォルトの名無しさん
07/01/21 12:12:55
わかりました
7じゃなくて6ですた…
自己解決染ました
418:デフォルトの名無しさん
07/01/21 12:41:03
>>417
> 7じゃなくて6ですた…
植木算のミスといいます。そして Perl では「必要がなければ添え字を扱わない」ことで、このリスクを回避できます。
foreach my $wday (@week) {
print $wday;
}
あるいは、
print for @week;
419:デフォルトの名無しさん
07/01/21 13:30:56
すごい省略できるんですね…
420:デフォルトの名無しさん
07/01/21 16:25:18
Perlの省略記法は、芸術ですから。
いろいろ言われるところもあるけど、ラリー・ウォール先生もPGは傲慢であれとおっしゃっていることだし。
うん。大丈夫。半年前に書いたスクリプトがさっぱり分からなくても大丈夫。泣くことなんて無いよ。
421:デフォルトの名無しさん
07/01/21 16:39:35
> foreach my $wday (@week) {
> print $wday;
> }
"my" なんて入れる必要ないだろ
422:デフォルトの名無しさん
07/01/21 16:45:32
PBP6.9に入れた方がいいと書いてあるだろ
423:デフォルトの名無しさん
07/01/21 18:36:44
自分のフォルダのtextファイル(1000行~1500行)を
ひとつの変数に入れる方法を教えてください
open(IN,"< foo.txt");
foreach(IN){ ・・・
}
のように一行づつ処理ではなく、全部の行をまとめて処理したいのです。
(正規表現で複数の行に渡って処理したいため)
何かいい方法はないでしょうか?
よろしくお願いします
424:デフォルトの名無しさん
07/01/21 18:40:53
read関数
425:デフォルトの名無しさん
07/01/21 18:47:46
my $txt = join('', (<IN>)[999 .. 1499]);
426:423
07/01/21 18:49:16
>>424
>>425
ありがとうございます。
無事解決できました
427:デフォルトの名無しさん
07/01/21 19:00:13
いいのかおい
428:デフォルトの名無しさん
07/01/22 23:22:29
正規表現の量指定子{}に変数は使えますか?
429:デフォルトの名無しさん
07/01/22 23:25:53
すいません、自己解決しました
てか自分で試せばよかった・・・
430:デフォルトの名無しさん
07/01/23 17:27:38
すみません。
教えてください。
my @aaa = () ;
my @bbb = () ;
for(my $i=0;$i<5;$i++) {
@aaa = ($i,$i+1) ;
@bbb = (@bbb,\@aaa) ;
}
foreach(@bbb){
print "$_\n" ;
}
foreach(@bbb){
foreach(@$_){
print "$_\n" ;
}
}
上を実行すると下の結果になります。
ARRAY(0x13c93c)
ARRAY(0x13c93c)
ARRAY(0x13c93c)
ARRAY(0x13c93c)
ARRAY(0x13c93c)
4 5
4 5
4 5
4 5
4 5
>>↓に続く
431:430
07/01/23 17:28:11
>>↑の続き
出力させたい結果は以下なのですがどうも
リファレンスの中がARRAY(0x13c93c)で全て同じになってしまっているようです。
(同じ@aaaという配列名をリファレンスしているせい?)
ループさせてリファレンスを増やしていきたいのですが
どのようにしたら下記のような出力結果に出来ますでしょうか。
0 1
1 2
2 3
3 4
4 5
432:デフォルトの名無しさん
07/01/23 17:40:06
レキシカルスコープ
433:デフォルトの名無しさん
07/01/23 17:41:40
>>430-431
ループのなかでmyするようにする。
my @aaa = ($i,$i+1) ;
若しくは無名配列のコンストラクタを使う。
@bbb = (@bbb,[@aaa]) ;
ループの外では@aaaを使っていないのだから、
スコープをループ内に縛る前者をお勧めする。
434:デフォルトの名無しさん
07/01/23 17:48:50
質問です。
テキストファイルから顔文字を除去しようと考えていますが、いい方法がみつかりません。
正規表現でうまく除去する方法というのはないでしょうか?
現在考えていますのが、括弧の中に記号あると顔文字であると判断するとしています(例=(゜Д゜) (ノ∀`*) など。
この正規表現を書く場合全ての記号を書かないといけないでしょうか?
質問が2つとなりましたが、よろしくお願いします
435:デフォルトの名無しさん
07/01/23 17:52:37
>>434
まず正規表現を勉強しろ。
顔文字のリスト作ってそれと比較するのが単純で速いと思うが。
436:デフォルトの名無しさん
07/01/23 17:55:52
(゜o゜)これはおk?
(TへT)これもおkだね
437:434
07/01/23 17:57:28
>>435
リスト作ったほうが早いですか。
その場合、リストにない顔文字は一致しませんけど、しょうがないか…
全部の顔文字をうまく除去するなんて、難しいですよね
438:デフォルトの名無しさん
07/01/23 18:01:19
上手く作ったとしても
テンプレート・ツールキット(TT)
なんて文脈じゃ誤判定は避けられないな
439:デフォルトの名無しさん
07/01/23 18:04:54
>>437
"ヽ(`Д´)ノ"
とかが、"ヽノ"になってもいいのかってこったわな。
結局は、顔文字の辞書ファイルを保守するしかないだろ。
440:434
07/01/23 18:18:05
"ヽ(`Д´)ノ"の場合は前後が記号ならそれも弾くとか考えてたんですよね
まぁ、ノのほうが記号じゃないんで、残りますが。
顔文字の辞書作ってるけど。結構メンドクセ
441:430
07/01/23 18:21:54
>>433
解決しました。
ありがとうございました。
>>432
こういうのをレキシカルスコープって言うんですね。
ありがとうございます。
442:デフォルトの名無しさん
07/01/24 01:40:36
文字の置換の際に、「マッチした文字列になんらかの処理をする」ということは可能でしょうか?
$str = "ABCDEF";
$str =~ s/(B)/&conv($1)/;
のように、マッチした文字列を、関数を使って、返り値で置換したいのですが・・・
(ちなみの、このコードだと、
A&conv(B)CDEF
という文字列になってしまいました。。。)
443:デフォルトの名無しさん
07/01/24 02:25:10
e
444:デフォルトの名無しさん
07/01/24 04:16:24
v
445:デフォルトの名無しさん
07/01/24 06:30:30
>>442
Windowsならコマンドプロンプト開いて
perldoc perlre
でperlの正規表現のドキュメント読めるよ。
ドキュメントにざっと目を通してれば人に質問するような内容じゃないぞ。
446:4442
07/01/24 07:16:24
>443
>445
ありがとうございます。 /e で、できました。
ドキュメントを確認せずに質問してしまって
済みませんでした。
プログラミングPerlにも、 /e が載ってました・・・
447:デフォルトの名無しさん
07/01/24 14:10:56
CGI作るつもりでperl始めたんだけど、テンプレにあるようなCGIとは無関係な使い方ってどんな使い方するの?
例えばどんな仕事でどう使うとか教えてほしい
448:デフォルトの名無しさん
07/01/24 14:14:36
>>447
スクリプトとして使えるじゃん。 バッチ処理とかさ。
449:デフォルトの名無しさん
07/01/24 14:26:58
>>447
CGIと関係なく、データベースとのやりとりとか。
450:デフォルトの名無しさん
07/01/24 14:27:35
>>447
えーと、えーと
451:デフォルトの名無しさん
07/01/24 14:29:52
こんな質問するやつに教えても理解できないと思うよ
452:デフォルトの名無しさん
07/01/24 14:31:22
エロ画像エロ動画収集に決まってるだろ
453:デフォルトの名無しさん
07/01/24 14:32:40
分類したエロ画像ファイルをリネームする
454:デフォルトの名無しさん
07/01/24 15:02:24
CUIだから単純で且つ面倒くさい処理やらせてる。すぐ書けるしね
>>452
漏れ以外にPerlをエロ収集に使おうと考える奴がいるとは・・・
455:デフォルトの名無しさん
07/01/24 16:01:07
>452-454
あれ、俺が何人もいる…
456:デフォルトの名無しさん
07/01/24 17:03:32
たしかにエロ収集に便利、というよりエロ収集してる時が一番はかどるな。
457:デフォルトの名無しさん
07/01/24 17:06:36
組みたくなってきた・・・
エロパワーは絶大だな
458:デフォルトの名無しさん
07/01/24 17:31:07
▀▄ ▀▄ ▄█ ▄█ ▀▀▀▀█
▀▄ ▀▄ ▄▀█ ▄▀█ ▄▀
▄▀ ▄▀ ▄▀ █ ▄▀ █ █
▄▀ ▄▀ ▀▀▀█▀ ▀▀▀█▀ █
▀ ▀ ▀ ▀ ▀
█ ▄▄▄ █ ▀▀▀▀ ▄ ▄█ █
█ █▄▄ █ █ ▄▄▄▄▄▄▄ █ ▄▄▄▄█▄▄
▀█ ▄█ █ █ █ ▄▀ █ █
█ ▀ █▀ █ █ ▄▀▀▄ █ ▄▄▄█
█ ▄▀ █ ▄▀ █ █ █ █▀▄
▀ ▀ ▀▀ ▀ ▀▀▀ ▀ ▀▀▀
こんなスレアラシに使える。
459:デフォルトの名無しさん
07/01/24 18:27:19
正規表現が使いやすいからPerlで組んだ
でもCUIなのがなぁ
460:デフォルトの名無しさん
07/01/24 18:34:47
Perlでは、ワンライナーか数行程度のスクリプトでテキストをいじったりとか
しかしてないが
Unicode対応がボミョウなので、たまに困ったことになる
use encoding('cp932')とかって、-n/-pスイッチとかと一緒に使うと
うまく動かなくね?つか、これって基本的に非推奨なんだべ?
Unicode文字列のリテラルや正規表現を直接記述できないので、
use encoding()しないとなると途端にウザい事態になるわPerlは
461:デフォルトの名無しさん
07/01/24 18:39:55
スクリプトをutf8で書けばuse encodingいらないし特に問題ないけどね。
462:460
07/01/24 18:43:07
>>461
それはスクリプトも入力もUTF-8を仮定できるときだけだべ?
少なくともWindows環境でそれは仮定できないなぁ
UTF-8なファイル名でファイル開いたりできないし
463:デフォルトの名無しさん
07/01/24 19:11:42
>>115
464:デフォルトの名無しさん
07/01/24 21:44:41
>462
URLリンク(aspn.activestate.com)
465:460
07/01/24 23:34:35
>>463
-pスイッチや-nスイッチを使わない場合はそれで上手く行くようです。
そもそも毎度毎度こんなに長いのではワンライナーは書けませんし、
簡単な仕事を簡単にやっつけられないのなら、Perlとしての魅力は
激減ですが。
やっつけ仕事によく使う-pスイッチや-nスイッチと
use utf8を共存させる方法はありますか。
#!/usr/bin/perl -pi.bak
なスクリプトで>>115の方法を試すと全くおかしなことになります。
>>464
なるほど、便利なモジュールがあるのですね。
466:デフォルトの名無しさん
07/01/25 00:31:18
間違いなく合ってない。
煽りとかではなく。
別の言語にしたほうが幸せになれるとおもうよ。
467:デフォルトの名無しさん
07/01/25 01:21:17
Perl/Tk で GUI でエロ画像を集めてるよ。
468:デフォルトの名無しさん
07/01/25 02:46:48
エロのエネルギーはおよそ12kW/hです。
469:デフォルトの名無しさん
07/01/25 09:55:07
質問
use strict; warn $c;
だとstrictが効くのに
use strict; warn $a;
だとstrictが効かないのはなぜ?
$bも効かない
470:デフォルトの名無しさん
07/01/25 10:04:09
sort() で使われるから例外扱い
perlvar嫁
471:デフォルトの名無しさん
07/01/25 10:16:32
質問します。
for(my $i=0;$i<=$#aaa;$i++){
$out = $aaa[$i] ;
if( $aaa[$i+1] ){
while($aaa[$i+1] =~ /^\+/){
$i++ ;
$out = "$out $aaa[$i]" ;
}
}
print "$out\n" ;
}
これのforをforeachで書いたらどんな記述でかけますでしょうか。
やりたいことは、ある要素のアタマに"+"があれば
その要素は一つ前の要素とつなげようとしています。
foreachで回している最中に強制的に次の要素にアクセスすることは出来るのでしょうか。
472:デフォルトの名無しさん
07/01/25 10:18:14
from>>469 to>>470
perldoc perlvar
$a
$b Special package variables when using sort(), see "sort" in perlfunc. Because of this specialness $a and $b don’t need to
be declared (using use vars, or our()) even when using the "strict ’vars’" pragma. Don’t lexicalize them with "my $a" or
"my $b" if you want to be able to use them in the sort() comparison block or function.
thx!
473:デフォルトの名無しさん
07/01/25 10:27:06
>>foreachで回している最中に強制的に次の要素にアクセスすることは出来るのでしょうか。
foreachでは今アクセスしている要素が何番目かを知ることはできない。
もちろん、中で別に変数を$i++とかすりゃ別。
俺ならこんな感じに書く。
foreach (@aaa) {
if (/^\+/) {
$out[-1] .= " $_";
} else {
push @out, $_;
}
}
474:デフォルトの名無しさん
07/01/25 10:34:48
すまん、なぜかソラ目でprintがpushに見えていた。
printだとこうかな。printが2つあるのがいまいち気に入らないが...
my $buf = undef;
foreach (@aaa) {
if (/^\+/) {
$buf .= " $_";
} else {
print $buf, "\n" if defined $buf;
$buf = $_;
}
}
print $buf, "\n" if defined $buf;
475:デフォルトの名無しさん
07/01/25 10:38:17
>>473 の後
print map { "$_\n" } @out; でもすりゃいいんだから別にいいんじゃ
476:デフォルトの名無しさん
07/01/25 15:20:56
print "$_\n" for @out;
このほうが短い。
477:デフォルトの名無しさん
07/01/25 15:30:03
print join "\n", @out;
の方がわかり安い
478:デフォルトの名無しさん
07/01/25 15:49:57
どれが速いんですかね^^
479:デフォルトの名無しさん
07/01/25 16:05:03
>>477
ダウト。それだと最後の要素の後に改行が出ない。
480:471
07/01/25 16:31:27
>>473
できました!!
すっきりしてわかりやすくなりました。
ありがとうございます。
481:デフォルトの名無しさん
07/01/25 16:40:25
>>479
そういう細かい部分ってすっごい大事だよね
後で泣き見たりする
しかし「ダウト」って使う人はあんまり見たことが無い
482:デフォルトの名無しさん
07/01/25 18:24:14
クイズのゲームを作っているのですが、問題を回答したら次ってどんどん進んでいき
正解したら各問ごとに正解数をカウントしていってりうのですちゃんとカウントされません。
perlはテキストでも作ってそれに書き込んでそのあと読み込んでしないと記憶した
変数が消えるのですか・・・?
変な質問ですみません。HSPからperlに乗り換えてみたんですが混乱してしまって
483:デフォルトの名無しさん
07/01/25 18:28:08
>>482
日本語でおk
HSPで作ったほうがいいんじゃね?
484:デフォルトの名無しさん
07/01/25 18:30:01
>>483
perlの勉強をしてみたいと思いましたので・・・
myで定義をしてるんですけど、なんかいろいろと定義の仕方があるみたいですねperlは
485:デフォルトの名無しさん
07/01/25 18:32:17
さっさとソースを見せろ
486:デフォルトの名無しさん
07/01/25 18:45:37
if($tugi eq "Q1"){
if($toi eq "t"){
$sum=$seikai+1;
}
&mon0;
}
if($tugi eq "Q2"){
if($toi eq "t"){
$sum=$seikai+1;
}
&mon1;
}
if($tugi eq "Q3"){
if($toi eq "t"){
$sum=$seikai+1;
}
&goukei;
}
sub goukei{
print "正解は"+$sum+"個";
}
487:デフォルトの名無しさん
07/01/25 18:45:40
次の問題へ進むたびに正解数を my してるんだろうな
488:デフォルトの名無しさん
07/01/25 18:47:08
sub mon0{
print "<P>";
print "<SELECT name='answer' size='3'>";
print "<OPTION value='true'>みかん</OPTION>";
print "<OPTION value='false'>アップル</OPTION>";
print "<OPTION value='false'>ばなな</OPTION>";
print "</SELECT>";
print "</P>";
print "<INPUT type=hidden name=tugi value=Q2>";
print "<P><INPUT type='submit' value='次の問いへ'></P>";
}
sub mon0{
print "<P>";
print "<SELECT name='answer' size='3'>";
print "<OPTION value='false'>インコ</OPTION>";
print "<OPTION value='true'>ふくろう</OPTION>";
print "<OPTION value='false'>鳩</OPTION>";
print "</SELECT>";
print "</P>";
print "<INPUT type=hidden name=tugi value=Q3>";
print "<P><INPUT type='submit' value='次の問いへ'></P>";
}
こんな感じです
489:デフォルトの名無しさん
07/01/25 18:48:04
webprogでやれ
490:487
07/01/25 18:49:27
はずした。
> $sum=$seikai+1;
491:デフォルトの名無しさん
07/01/25 18:49:59
$sum=$sum+1
じゃないの?
492:デフォルトの名無しさん
07/01/25 18:53:22
>>491
そこは修正しました。
上のほうで
my $sum;
と定義してるのが問題なんでしょうか?
493:デフォルトの名無しさん
07/01/25 18:57:38
上のほうで、とか言われてもわからないから全部見せろ
494:デフォルトの名無しさん
07/01/25 18:58:39
そもそもCUIなのかCGIなのか
495:デフォルトの名無しさん
07/01/25 18:59:02
↓こっちのがいいんでね?
スレリンク(php板)
496:デフォルトの名無しさん
07/01/25 19:08:30
URLリンク(www.vipper.net)
ここに書き込むと長いのでアップしてきました
497:デフォルトの名無しさん
07/01/25 19:19:26
htmlなんだろw
498:デフォルトの名無しさん
07/01/25 19:22:30
板違いっぽいですね(--
499:デフォルトの名無しさん
07/01/26 05:44:42
>>477 は最後の改行もそうだが、メモリ内で一旦展開するから、
効率よくないんでない?
500:デフォルトの名無しさん
07/01/26 07:40:35
さらに、文字列を連結するためにメモリの再割り当てが何度も起きる悪寒
501:デフォルトの名無しさん
07/01/26 11:44:01
UTF8 で並んでいる名前の一覧があるのですが、それをあいうえお別に分類したいのですが
どういう方法が良いでしょうか。
青木 -> @AGyou へ
斉藤 -> @SaGyou へ
という感じにしたいとおもいます。
502:デフォルトの名無しさん
07/01/26 12:04:33
読み仮名付けなきゃ無理だね
503:デフォルトの名無しさん
07/01/26 12:07:36
>>502
お返事ありがとうございます。やっぱり難しいですね orz
別の手段を考えて見ます。
504:デフォルトの名無しさん
07/01/26 12:10:01
>>503
> 別の手段を考えて見ます。
なんで? 読みがなつければいいじゃん。
505:デフォルトの名無しさん
07/01/26 12:13:15
>>504
表現が悪くてすいません。別の手段 → 読み仮名をつけることです。
506:デフォルトの名無しさん
07/01/26 12:32:13
読みがなをつけるモジュールって、あっても良さそうなもんだけどね。
mecabにぶっ込めば一発か?
507:デフォルトの名無しさん
07/01/26 12:35:47
>>506
あ~それ欲しいですね。
508:デフォルトの名無しさん
07/01/26 13:24:24
不確実すぎるだろ・・・
509:デフォルトの名無しさん
07/01/26 14:09:40
すべて登録されているとは限らないし ―特に名前の方、
読みがアンビなのもあるから、必要なのは、読みがなふり支援ツール
じゃなかんべか。
510:デフォルトの名無しさん
07/01/26 15:48:49
漢字にふり仮名を自動でつけるのは
ある程度は自動化できるが
同じ字で読みが違う場合もあるので(ex.徳沢 => とくさわ,とくざわ etc.)
完全な精度では無理。
511:デフォルトの名無しさん
07/01/26 18:19:13
URLリンク(www.alles.or.jp)
684万人を調べて、約7万8千種の名字ランキングを公開している人がいるぞ。
そのデータを使うのが手っ取り早いと思われる。
....しかし、ヒマ人だな~。
512:デフォルトの名無しさん
07/01/26 19:17:30
読みを当てはめるのも結局確率だから
↑のデータ使ってもやっぱ無理っしょ
513:デフォルトの名無しさん
07/01/26 20:45:14
そこでAIの出番なわけだ
514:デフォルトの名無しさん
07/01/26 20:52:49
そこでエスパーの出番なわけだ
515:デフォルトの名無しさん
07/01/26 20:57:04
WindowsXP上でActivePerlを使ってるんですが、USBデバイスをコントロールする方法はありますか?
学習リモコンのクロッサム2+USBとデータをやりとりしたいんですが。
516:デフォルトの名無しさん
07/01/26 21:07:32
>>511のリンク先より引用
----
名字 ふりがな 人数 順位 累積人数 累積比率
鈴木 スズキ 139,627 1 139,627 2.04029%
鈴木 ススギ 25 13,107 6,517,718 95.2398%
鈴木 ススキ 7 27,840 6,723,557 98.2476%
鈴木 スズノキ 3 41,426 6,795,040 99.2922%
鈴木 スズ 2 47,333 6,812,494 99.5472%
鈴木 スズシ 2 47,333 6,812,506 99.5474%
鈴木 スヅキ 2 47,333 6,812,518 99.5476%
鈴木 スス 1 56,150 6,832,142 99.8343%
鈴木 ススヘキ 1 56,150 6,832,147 99.8344%
鈴木 ススリキ 1 56,150 6,832,148 99.8344%
鈴木 スズギ 1 56,150 6,832,151 99.8344%
鈴木 ズスキ 1 56,150 6,832,308 99.8367%
鈴木 ズズキ 1 56,150 6,832,309 99.8367%
鈴木 ヌズキ 1 56,150 6,836,957 99.9047%
----
姓しかわからない状況で確実に読み仮名をつける方法は
>>513のAIじゃなく >>514のエスパーだな。
AIについて無知な>>513はAIと書けばかっこいいと思ってるのか?
517:デフォルトの名無しさん
07/01/26 21:11:14
ヌズキはねーよw どう考えても書き間違いだろwww
あ、ヌズキさん見てたらごめんなさい><
518:ヌズキ
07/01/26 21:24:52
呼んだ?
519:デフォルトの名無しさん
07/01/26 21:26:36
名前の仮名振りは、人間がやってもかなり難しい。
自動化なんてとても無理。 入力補助が限界でしょうね。
520:デフォルトの名無しさん
07/01/26 21:50:28
あと「ズスギ」さんと「ズズギ」さんが入れば
濁点のあるなしの組み合わせがそろうのにな
521:デフォルトの名無しさん
07/01/26 22:00:02
読みが存在しない漢字が存在する
522:デフォルトの名無しさん
07/01/27 00:46:22
たとえば、「東」と書いて「あずま」「ひがし」「とう」と、読み方がいろいろある。
漢字だけからは読み方は判別できない。
そのため、正しい読み方は、本人にしかわからない。
523:デフォルトの名無しさん
07/01/27 00:52:27
同じクラスに五島(ごとう)と五島(ごしま)が居たことあるよ。
524:デフォルトの名無しさん
07/01/27 01:09:35
>>523
おまえ、ひょっとして1年2組の時の近藤(こんどう)か?
おれ隣のクラスの権藤(ごんどう)だよ。おぼえてるか?
525: ◆TWARamEjuA
07/01/27 01:37:47 BE:4356285-BRZ(6761)
住基ネットワークに問い合わせれば総て解決♪
526:デフォルトの名無しさん
07/01/27 15:01:28
>>515
キミの質問は、2つに切り分けないといけない。
1.クロッサム2のDLLのインターフェースが公開されているかどうか。
2.ActivePerl から DLLを呼び出せるかどうか。
両方とも「YES」だからできるのだが、質問の切り分けができず、
「1」の当否を回答者に調べさせるキミには無理だ。
527:デフォルトの名無しさん
07/01/27 15:20:23
>>525
スーパーハッカーキタ━━━(゚∀゚)━━━ !!
528:デフォルトの名無しさん
07/01/27 16:01:58
あふぉか
姓しかわからないデータと住基ネットのデータをどうリンクするんだよ。
>>525=>>527か?
くだらないネタにみんなスルーしてるわけだが、
自作自演するほど反応してほしかったのか?
529:デフォルトの名無しさん
07/01/27 16:22:13
ネタだと思っているなら何故あふぉとか言ってマジ突っ込みするんだろう。分裂気味?
まぁ大方、真相がネタでもマジでも恥かかないよう工夫したら前後で矛盾が出たってとこか。
530:デフォルトの名無しさん
07/01/27 17:17:34
まぁ未承諾さんだし。
531:デフォルトの名無しさん
07/01/27 18:02:01
>>526
もちろんDLLとかWindowsの約束とかよく分かっておりません。
そのあと、mrccom.dllを見つけてWin32::APIでimportを試すところまで来ましたが、
unknown errorでimport出来ず\(^o^)/。どなたか気が向いたら教えてください。
532:デフォルトの名無しさん
07/01/27 20:09:12
>>528
サブイ
533:デフォルトの名無しさん
07/01/27 22:26:03
>>527,>>529,>>532
ここはvipでも口論・議論ではなくperlの質問箱スレだ。
前日の終わったネタをいつまでも引きずったり、
指摘されて逆切れして粘着するぐらいならほかのスレ行けよ
534:デフォルトの名無しさん
07/01/27 22:45:22
>>528=533 別に君以外誰も文句も言ってないし、しきりも頼んでないけど。
頓珍漢レスを>>529に指摘されて逆ギレしてる張本人乙にしかみえないよ?w
535:デフォルトの名無しさん
07/01/27 22:52:37
粘着だが逆ギレだか知らんが、
PerlのスレでPerlの話をしないやつはすべて平等に価値がない
536:デフォルトの名無しさん
07/01/27 23:29:55
ここは批判されると30分以内に逆切れコメントする527を観察スレですか?
537:デフォルトの名無しさん
07/01/28 00:35:56
>>531
>どなたか気が向いたら教えてください。
まず、C++を勉強しろ。C++でDLLを扱えるようになること。
PerlでDLLを扱う話はそれからだ。
538:デフォルトの名無しさん
07/01/28 01:35:42
>>533
ここはvipでも口論・議論ではなくperlの質問箱スレだ。
前日の終わったネタをいつまでも引きずったり、
指摘されて逆切れして粘着するぐらいならほかのスレ行けよ
539:デフォルトの名無しさん
07/01/28 02:58:29
__
| |
| | ___ ___
| | . / | __ _____ / _ \
| | / /| | / / / ____/ / / > l
| |. / / .| |. / / / /.. _ /  ̄ /
| |/ / | |/ / /  ̄ ̄_/ / \
| /. | / / / ̄ ̄ __ / / ̄ ̄> |
| / |___/ ./  ̄ ̄ ̄ / /  ̄ ̄ /
 ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ _____ ___ ___ ___
______ /__ __/ [][] _| |_| |__ _| |_
| ___ \ / / | _ | |_ レ'~ ̄|
| | \ l | |_  ̄| | / / / /| |
| |____/ / \__| | |  ̄ /_ /. | |_
| ____/ ___ __ __/ヽ |_|. |__|. \/
| | /`、_/_/ / _ ヽ / _ /
| | ヽ / | l l l | l l l
| | | l ヽ  ̄ / ,ヽ  ̄ /
 ̄  ̄  ̄ ̄ / __ ヽ
| l l l
ヽ  ̄ ̄ /
~ ̄ ̄~