あなたの習慣について教えてください!!

perlの初心者の者です.

以下のようなサンプルソースを実行すると
Can't locate auto/YAML/Syck/DumpYAML.al in @INC (@INC contains: C:/Perl/site/lib
C:/Perl/lib .) at C:/Perl/site/lib/YAML/Syck.pm line 113
というエラーが出てしまってyaml.txtに当然実行結果が書き込まれていません.原因はなんでしょうか?cpanコマンド, ppmコマンドを用いてYAML::Syckをうまくインストールできなかったのでcpanサイトにいってtarボールを取ってきて解凍し, 適当な格納モジュールフォルダに格納しています.

サンプルスクリプト
#!/usr/bin/perl
use YAML::Syck;
$data = [ {data1=>10, data2=>20, data3=>30} ];
DumpFile("test.txt", $data);

出力結果はtest.txtは
 data1: 10
data2: 20
data3: 30
になるはずなのですが.

A 回答 (5件)

>Microsoft Visual C++ 2005 Express Editionでよろしいでしょうか?



2008だと問題がでるとかでないとか聞いたことがありますが
2005ならたぶん大丈夫だと思います。

> cpan YAML::Syckと実行してみたところインストールが始まったのかいろんなファイルが取得してきていたようですが,
> これでコンパイル, インストールできたのでしょうか?初歩的な質問で申し訳ありませんね.

cpan YAML::Syck と入力したのであれば、

・ネットワーク越しにtar玉をとってきて
・作業用ディレクトリに展開して
・コンパイル
・テスト
・インストール

とすべてやってくれるはずですので、
最後にエラーを示すメッセージがでていなければOKです。
ありがちなのはテストで失敗する項目があって
インストールに進まないということですが。

この回答への補足

sakusaker7様,
ご回答ありがとうございます.
>最後にエラーを示すメッセージがでていなければOKです。
エラー的な内容は特に見れませでした.
正常にコンパイル, テスト, インストールできているのか確認する方法はありますか?
確認のため再度実行
>cpan YAML::Syck
CPAN: Storable loaded ok (v2.16)
Going to read C:\Perl\cpan\Metadata
Database was generated on Mon, 21 Jan 2008 11:38:00 GMT
YAML::Syck is up to date (1.01).

おそらく正常にコンパイル, テスト, インストールができたと思うのですが, サンプルスクリプトを再度実行しても上述のようにエラーがまだ出ます.
私のものだとインストールされたものがC:\perl\cpan\build\YAML-Syck-1.01-WxCiJBに格納されていると思うのですが.
恐縮で申し訳ありません.

補足日時:2008/01/22 15:34
    • good
    • 0

XAMPPですか、PerlインタプリタはActivePerlのものと同じだけど


ディレクトリ構成とかが違うみたいですね。
ちょっと調べたところではなんかアドオンを入れないとcpanも
まともに使えないとかありましたけどその辺は大丈夫ですか?

Syck.dllがきちんとインストールされていないと動かないはずなので
とりあえず、Syck.dll が一体どこにインストールされたのか
チェックしてみてください。

一つ確認ですが、XAMPPのものとは別に、自分でActivePerlを
インストールしていませんか?
    • good
    • 0
この回答へのお礼

xamppと場合だと実行がうまく実行されません.

別のスレを立てるのでよろしくお願いします.

>ちょっと調べたところではなんかアドオンを入れないとcpanも
>まともに使えないとかありましたけどその辺は大丈夫ですか?
そのへんが理解できていません.何か参考になるWebページあったら教えてください.

>Syck.dllがきちんとインストールされていないと動かないはずなので
>とりあえず、Syck.dll が一体どこにインストールされたのか
>チェックしてみてください。
検索かけたところありません.

>一つ確認ですが、XAMPPのものとは別に、自分でActivePerlを
>インストールしていませんか?
まさにその通りです.

お礼日時:2008/01/23 03:10

> C:\perl\cpan\build\YAML-Syck-1.01-WxCiJB



これはビルドに使われてた一時ディレクトリです。
実際にインストールされると、

c:\perl\site\lib\YAML\
などに Syck.pm がコピーされます。
また、Cコンパイラがビルドしたバイナリが

c:\perl\site\lib\auto\yaml\syck

に置かれているはずです。

わたしのところだと
c:\perl\site\lib\auto\yaml\syck のディレクトリ

2008/01/22 16:29 423 .packlist
2008/01/22 16:28 0 Syck.bs
2008/01/22 16:28 77,824 Syck.dll
2008/01/22 16:28 786 Syck.exp
2008/01/22 16:28 1,910 Syck.lib
2008/01/22 16:28 257,024 Syck.pdb
6 個のファイル 337,967 バイト

こんな感じですがどうなってますか?

あと、c:\perl\site の下に syck.pm が複数あると思いますが、
それを全部列挙してみてください。

C:\Perl\site\lib\auto\YAML\Syck>cd \perl\site

C:\Perl\site>dir /s Syck.pm
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は B03A-311F です

C:\Perl\site\lib\JSON のディレクトリ

2008/01/19 02:45 5,236 Syck.pm
1 個のファイル 5,236 バイト

C:\Perl\site\lib\YAML のディレクトリ

2008/01/19 02:45 8,095 Syck.pm
1 個のファイル 8,095 バイト

C:\Perl\site\lib\YAML\Dumper のディレクトリ

2007/10/20 17:47 107 Syck.pm
1 個のファイル 107 バイト

C:\Perl\site\lib\YAML\Loader のディレクトリ

2007/10/20 17:47 107 Syck.pm
1 個のファイル 107 バイト

ファイルの総数:
4 個のファイル 13,545 バイト

この回答への補足

sakusaker7様,
ご回答ありがとうございます.

ちなみにxamppをインストールしています.
>c:\perl\site\lib\YAML\
などに Syck.pm がコピーされます。
はい。コピーされています.

>また、Cコンパイラがビルドしたバイナリが

>c:\perl\site\lib\auto\yaml\syck
>に置かれているはずです。
私のところだとc:\perl\site\lib以下の\auto\syckが存在しません。

auto\libというフォルダはc:\xampp\perl\libにauto\YAMLというものがありますが.このsakusaker7様のおっしゃるようなc:\perl\site\lib\auto\yaml\syck のディレクトリには下記のようなバイナリファイルが存在していません.

2008/01/22 16:29 423 .packlist
2008/01/22 16:28 0 Syck.bs
2008/01/22 16:28 77,824 Syck.dll
2008/01/22 16:28 786 Syck.exp
2008/01/22 16:28 1,910 Syck.lib
2008/01/22 16:28 257,024 Syck.pdb
6 個のファイル 337,967 バイト
正常のインストールされていないのでしょうか?

その代わりに
C:\xampp\perl\site\lib\auto\YAMLのディレクトリには
Syck.pmを含んだ12個のファイルがあります.
Syck.dllといったファイルがなく拡張子が.pmというモジュールのファイルばかりが存在しています.正常にインストールされていないのでしょうか?

補足日時:2008/01/22 21:33
    • good
    • 0
この回答へのお礼

sakusaker7様,
なんとか実行できました.
ありがとうございました.

お礼日時:2008/01/23 02:54

一つ確認したいのですが、エラーメッセージに出ているディレクトリ名からすると


ActivePerl っぽいですけどそうですか?
そしてその場合、Visual C++ コンパイラはインストールされていますか?
もしきちんと使える状態になっていれば、

cpan YAML::Syck

で何の問題もなく入ると思うんですが。
tarアーカイブからインストールする場合は、

perl Makefile.pl
nmake
nmake install

でいけると思います。

この回答への補足

sakusaker7様,
ご回答ありがとうございます.
ActivePerlを使っています.
>Visual C++ コンパイラはインストールされていますか?
Microsoft Visual C++ 2005 Express Editionでよろしいでしょうか?
インストールはしてます.

そこで適当な場所で
cpan YAML::Syckと実行してみたところインストールが始まったのかいろんなファイルが取得してきていたようですが, これでコンパイル, インストールできたのでしょうか?初歩的な質問で申し訳ありませんね.

補足日時:2008/01/22 03:30
    • good
    • 0

>tarボールを取ってきて解凍し, 適当な格納モジュールフォルダに格納しています.



YAML::Syck ってXS使ってるのでCコンパイラでコンパイルしないと
インストールできませんけど?

C:\perl\cpan\build\YAML-Syck-1.00-XT929A のディレクトリ

2008/01/11 02:55 <DIR> .
2008/01/11 02:55 <DIR> ..
2008/01/11 02:55 <DIR> blib
2007/10/20 17:47 21,498 bytecode.c
2008/01/11 02:55 16,402 bytecode.obj
2007/12/10 06:07 18,635 Changes
2007/10/20 17:47 787 COMPATIBILITY
2007/10/20 17:47 2,749 COPYING
2007/12/10 05:41 38,865 emitter.c
2008/01/11 02:55 43,127 emitter.obj
2007/10/20 17:47 59,778 gram.c
2007/10/20 17:47 2,262 gram.h
2008/01/11 02:55 30,203 gram.obj
2007/10/20 17:47 3,408 handler.c
2008/01/11 02:55 8,383 handler.obj
2007/10/20 17:47 45,355 implicit.c
2008/01/11 02:55 34,634 implicit.obj
2008/01/11 02:55 <DIR> inc
2008/01/11 02:55 <DIR> lib
2008/01/11 02:55 29,236 Makefile
2007/10/20 17:47 1,093 Makefile.PL
2007/10/20 17:47 1,143 MANIFEST
2007/10/20 17:47 368 META.yml
2007/10/20 17:47 7,674 node.c
2008/01/11 02:55 19,140 node.obj
2007/10/23 02:58 1,894 perl_common.h
2007/12/10 05:13 37,230 perl_syck.h
2008/01/11 02:55 0 pm_to_blib
2007/10/23 02:57 154,956 ppport.h
2007/10/20 17:47 1,301 ppport_math.h
2007/10/20 17:47 1,014 ppport_sort.h
2007/12/10 06:08 1,746 README
2007/12/10 06:11 4,749 SIGNATURE
2008/01/11 02:55 0 Syck.bs
2008/01/11 02:55 2,900 Syck.c
2008/01/11 02:55 86 Syck.def
2007/10/20 17:47 12,779 syck.h
2008/01/11 02:55 85,696 Syck.obj
2007/10/20 17:47 329 Syck.xs
2007/10/20 17:47 10,125 syck_.c
2008/01/11 02:55 25,987 syck_.obj
2007/10/20 17:47 11,073 syck_st.c
2007/10/20 17:47 1,049 syck_st.h
2008/01/11 02:55 17,232 syck_st.obj
2008/01/11 02:55 <DIR> t
2007/10/20 17:47 58,233 token.c
2008/01/11 02:55 46,015 token.obj
2008/01/11 02:55 102,400 vc70.pdb
2007/10/20 17:47 7,568 yaml2byte.c
2008/01/11 02:55 7,757 yaml2byte.obj
2007/10/20 17:47 6,704 yamlbyte.h

この回答への補足

sakusaker7様,
ご回答ありがとうございます.

>YAML::Syck ってXS使ってるのでCコンパイラでコンパイルしないと
>インストールできませんけど
とのことですが, コンパイル方法からインストール方法までよければ教えていただけないでしょうか?大変恐縮ではございますが.

補足日時:2008/01/22 02:26
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!