2016-06-24 11 views
0

「このようなファイルやディレクトリはありません」というエラーが表示されていますが、実際に問題のファイルがあります。私は二重引用符を使用しています。ファイルが置かれているディレクトリでコードを実行しています。perlから "〜/ filename"を開くファイルやディレクトリがありません

#!/usr/bin/perl; 
use warnings; 
use strict; 
use diagnostics; 

open(FASTA, "<", "~/LDTest.rtf") 

これがあっても失敗します:ここで

が私のコードである

touch ~/LDTest.rtf 
cd ~ 

...スクリプトを起動する前にシェルから実行され、ファイルが存在していることを保証するために、現在のディレクトリ。

+0

行を 'STDERR'にエコーして、それが何であるかを正確に把握し、大文字小文字を区別するファイルシステムを使用している場合に大文字と小文字の違いがあるかどうかを検討します。 (このようなシステムでは 'Foo'と' foo'は同じファイルではありません) –

+3

bashのようなシェルはホームディレクトリに '〜'を展開するので、 '〜/ LDTest.rtf'は'/home/foo/LDTest .rtf'; Perlの 'open'はこれをしません。完全なパスをファイルに渡してみてください。 – ThisSuitIsBlackNot

+0

こんにちは。あなたの応答に感謝します。私はこのケースをチェックしました。違いはありません。私は場所を "/Users/roblogan/LDTest.rtf"に変更しましたが、それは役に立たなかったです。 – Rob

答えて

4

あなたはこのラインに問題があります。

my $RawSequence = loadSequence("path/to/LDTest.rtf"); 

またはあなたがいる場合は、同じディレクトリ(意味である場合:代わりにチルダを使用しての

my $RawSequence = loadSequence("~/LDTest.rtf"); 

は、ファイルのフルパスを与えますファイルが存在するのと同じディレクトリからプログラムを実行する)、ファイル名を与えてください:

my $RawSequence = loadSequence("LDTest.rtf"); 
+0

my $ RawSequence = loadSequence( "LDTest.rtf");ディレクトリ自体は問題を解決しました。ありがとう! – Rob

+0

@Rob:これはあなたを助けた場合、これを回答として受け入れることができるので、この問題を解決して閉じることができます。 – serenesat

+0

私はそれを受け入れるために投稿から3分待たなければなりませんでした。今すぐ正しい答えとしてチェックする必要があります。再度、感謝します。 – Rob

3

eqシェルで

~/LDTest.rtf 

のuivalentはPerlで

"$ENV{HOME}/LDTest.rtf" 

です。

関連する問題