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

このエントリーをはてなブックマークに追加
>>950
もともとPerlで使われてた手法だろ。
953ハッカ飴:03/08/12 00:57
CPANモジュールのAlgorithm::Diffってちゃんと動く?
少なくとも俺の環境では正しい結果を返さないんだが。
954デフォルトの名無しさん:03/08/12 01:00
なにやっても動かぬ。
そうですか。
956ハッカ飴:03/08/12 01:08
そんなわけあるか。
ドキュメントにある
a x b y c z p d q
a b c a x b y c z
でさえ
a x b y c z p d q
a b c a x b y c z
になっちゃうんだぜ?
へー・・
958ハッカ飴:03/08/12 01:14
違う違う、こうだこうだ。
a    x b y c z p d q
a b c a x b y c z
ほー・・・
960デフォルトの名無しさん:03/08/12 01:16
ハッカ飴って人は、ただ単にメルフレ募集の人だね。
寂しそう。
961ハッカ飴:03/08/12 01:18
上手くいかないな。
じゃあ、こう。.は空白だと思ってくれ。

a.......x.b.y.c.z.p.d.q
a.b.c.a.x.b.y.c.z

サンプルスクリプトも載せようか?
俺はググってもこの話が見つからないことが不思議でしょうがないんだ。
何か教えてくれるなら、労力は惜しまないぞ。
962ハッカ飴:03/08/12 01:20
>>960
俺のポリシーだ。
それにここに書き込む話じゃない。
963デフォルトの名無しさん:03/08/12 01:27
以上、使えぬデシャバリさんですた。


ここ、スレッドあぼーんするかな。
夏。
965デフォルトの名無しさん:03/08/12 01:33
>>963
どっちが使えないんだか分からん
966デフォルトの名無しさん:03/08/12 01:35
>>963
このスレッドに恨みでもあるの?
   ∧_∧ 
   ( ´Д`) <みなさーん、お茶が入りましたよ〜 
  /    \ 
  | l    l |     ..,. ., .,
  | |    | _|。.:_::゜。-.;.:゜。:.:;。
  ヽ \_ .。'゚/   `。:、`;゜:;.::.。:.:。 
   /\_ン∩ソ\    ::..゜:: ゚。:.:.::.。.。:.  
.  /  /`ー'ー'\ \  ゜: ::..゜:: ゚。:.:.:,。:.:.
 〈  く     / / ::..゜:: ゚。:.:.:,.:.:.:。:.:,
.  \ L   ./ / _::..゜:: ゚。:.:.:,.:.:,.:.:.:,
    〉 )  ( .::旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦.
   (_,ノ    .`ー'旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦.
9682バイト文字に対応したカレントディレクトリを取得するには?:03/08/12 12:44
getcwd()で、カレントディレクトリ名を得る時、
カレントパス名に、文字化けする40種の文字列
(「表」「能」等、所謂「\」コードを含む文字列)
があると、正しく処理されないのですが…

Windows のActive State Perlで、
例えばカレントが
 C:\表示\
である場合、

 use Cwd;
 print getcwd();
の結果は

C:/・示
となります。

どうしたら回避できるでしょう?
(2バイト文字を含むカレントパスを正しく得られるgetcwd
等はないのでしょうか?)
(EUCで書いても同じです。jperlはNGです)
>>968
$path=`cd`;
`はバッククォート。
>>969
cdは帰ってこないでしょ
9712バイト文字に対応したカレントディレクトリを取得するには?:03/08/12 13:16
>>969
ごめんなさい。perlappに内包したいので、
例え標準関数でも外部プログラムは使わず、
perlの中だけで済ませたいのですが…
何か方法はないでしょうか?
>>968
use Cwd;
use File::Spec;

my $cwd = getcwd();
$cwd = File::Spec->canonpath($cwd);

print $cwd;
973972:03/08/12 13:50
>>972
自分で書いておいてなんだが、いいのか、これで?(w
なんかやばそうな気が。
974972:03/08/12 14:09
Cwd の _os2_cwd と _win32_cwd で \ を / に置換してるのが原因で、
File::Spec(File::Spec::Win32) の canonpath で / を \ に戻してるわけだから、
とりあえずWin32環境では問題なさそう。
他の環境も大丈夫だとは思う。
975デフォルトの名無しさん:03/08/12 15:54
WindowsでPerlによるGUIアプリを組むのにVBのように簡単に作りたいんですが、
探してたらこんなの見つけました(既出だったらごめん)。

http://www.bahnhof.se/~johanl/perl/Loft/

ただこれはソフトもマニュアルも英語なんですよね。
別に英語でもなんとか使えると思いますが、
二本のPerl界の発展のためにソフト・マニュアルのの日本語化を
してくれるような素敵な香具師はいらっしゃいませんか?

(By 日本のPerl界を憂うもの)
>>975
二本→日本でした。
>>975
あんたがやったら?
ActivePerl ver6まだ〜?
>>977
それ言われると思った。
残念ながら英語に関してはあまり得意ではないので、
誰か英語得意な方にお願いしたいなと思っております。
980ハッカ飴:03/08/12 16:07
diffの件なんだけどさー、Rubyのalgorithm/diffもCygwinのdiffも同じようになるんだが、おかしいよな?
ググっても相変わらずこの話は見つからないし。ホント謎だよ。

例1
テキスト1:
abc
テキスト2:
ababc

結果1
ab[ab]c
(テキスト1のbc間にabを追加しろ)

例2
テキスト1:
a
b
c
テキスト2:
a
b
a
b
c

結果2
a
b
[a]
[b]
c
(テキスト1の3行目にa、次の行にbを追加しろ)
>>974
ActivePerl build 805 +WindowsXPでは駄目。
ActivePerlはMS-WindowsでShift-JISが
使われているということを無視してる。
>>979
>残念ながら英語に関してはあまり得意ではない

得意になればいいじゃん
983ハッカ飴:03/08/12 16:40
>>974
/ 全てを \ に置き換えてもダメだろう。
シフトJISについて調べて、置き換えるべき / だけを置き換えないと。

シフトJISだから、第1バイトを探すのは簡単。
use Cwd;
$cwd = getcwd();
のあとで、$cwd =~ s%(シフトJISの第1バイトにあうパターン)/%\1\\%g;
>>982
いや〜誰かにやって欲しいなぁ。
ホント他力本願なんだけど・・・

もう少しでこのスレも6箱目に突入ですなぁ。
(しみじみと)
985ハッカ飴:03/08/12 17:03
>>971
getcwd()だって内部でcdコマンド使ってるんじゃない?
986デフォルトの名無しさん:03/08/12 17:13
Cで使えるPerlライブラリみたいのってありませんか?
9872バイト文字に対応したカレントディレクトリを取得するには?:03/08/12 17:17
>>972
で無事解決しました。感謝ですm(__)m

canonpathというの自体初めて知りました。。
書き込み入れる前にも色々調べはしたんですけど…
こういうのって、何を参考に調べれば良いんでしょう?
>>983
シフトJISなら2バイト文字で /(0x2F) が出てくることはないし、
Windowsじゃファイル名に / も使えないから、元々含まれてる
ことはないと判断して単純に全置換でいいと思ったんだけど……なんか抜けてる?

あ、それとも / 区切りのパスを得るために、ってこと?
989デフォルトの名無しさん:03/08/12 18:21
「\x9A」という16進数のデータを「\x9A」という文字列データに
変換したいのですがどうすればいいでしょうか?
>>989
$str .= '\x9A";
クオテーション間違えている上にだめじゃん。

$ch = char(0x9A);
992ハッカ飴:03/08/12 19:17
>>988
そうか。
全部置き換えて良かったのか。
>>970
ハァ?
994(・∀・;)ニヤニヤ ◆IuDnGO5LnY :03/08/12 20:08
>>952
そうなんですか?

そうすると、Rubyの↓を

  if $0 == __FILE__
    xxx
  end

Perlに直すにはどうすればいいんでしょう。

  if ($0 eq ??) {
    xxx;
  }

??の部分が分かりません。。
$ perl -e 'print __FILE__, "\n"'
-e
996デフォルトの名無しさん:03/08/12 20:23
次スレは?
>>995
えっ、えっ、・・・なんだかものすごい勘違いをしていたようです。

if ($0 eq __FILE__) {
  xxx;
}

これでいいのれすね。ありがとうございました。

んでは、逝ってきます★
998デフォルトの名無しさん:03/08/12 20:40
>>997
逝くまえに新スレ立てて
>>998
建てますた。
1000000000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。