如果语句看不到文件

时间:2018-09-07 01:15:15

标签: file perl if-statement

我在Perl中的import java.util.Collections; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import org.junit.Test; public class MapsPerfTest { @Test public void testMaps() { testMap("HashMap", new HashMap<>()); testMap("Hashtable", new Hashtable<>()); testMap("Synced-HashMap", Collections.synchronizedMap(new HashMap<>())); } void testMap(String name, Map<Integer, String> h) { for(int i=1; i<=tries; ++i) { long t1 = timeit(() -> testMapPut(h)); long t2 = timeit(() -> testMapGet(h)); System.out.println(String.format("%d %s put/get --> %7.2f / %7.2f ms", i, name, t1/1000/1000.0, t2/1000/1000.0)); } } long timeit(Runnable r) { System.gc(); long t = System.nanoTime(); r.run(); return System.nanoTime() - t; } static final int tries = 5; static final int count = 100000000; static final String VALUE = "-"; static final int putSpace = 100; static final int getSpace = putSpace*2; static final Integer[] numbers = new Integer[getSpace+1]; static { for(int i=getSpace; i>=0; --i) numbers[i] = i; } void testMapPut(Map<Integer, String> m) { for(int i=count; i>0; --i) m.put(numbers[i%putSpace], VALUE); } void testMapGet(Map<Integer, String> m) { for(int i=count; i>0; --i) m.get(numbers[i%getSpace]); } } 语句上遇到问题。

我无法使用if来获取if语句来查看文件。我基本上拥有扩展名为-e.new的文件。

.old

这是我的输出:

my $dir      = "/Users/henry/Desktop/perltest/templates";
my @oldfiles = glob "$dir/*.new";
my $oldfile;

print "checking for new templates\n";

foreach $oldfile ( @oldfiles ) {

    print "$oldfile\n";

    if ( $oldfile =~ /(\S+)\.new/ ) {

        my $newfile = $1;
        print "$newfile\n";

        if ( -e $newfile ) {
            print "file exist\n";
        }
        else {
            print "file does not exist\n";
        }
    }
};

1 个答案:

答案 0 :(得分:1)

  

我基本上有扩展名为.new.old的文件

因此,您有a.txt.newa.txt.old,但没有a.txt,并且消息file does not exist似乎是正确的

您似乎对变量感到困惑:您在名为*.txt.new的数组中拥有所有@oldfiles文件名,而$newfile没有.new或{{1} }后缀。您可能还想说类似的话吗?

.old