这可能是一个愚蠢的错误,但我似乎无法理解为什么会这样做。我编写了以下脚本,该脚本遍历一个文件的行,并且仅在该行(实际上是路径)不是有效路径时才将它们插入到另一个文件中。
open(my $fh_dst, '>>', $dst) or die
open(my $fh_src, '<', $src) or die;
while (my $file = <$fh_src>) {
chmod($file);
print $fh_dst $file unless(-e $file);
}
close ($fh_src);
close ($fh_dst);
它确实将路径插入到另一个文件中,但是由于某种原因,如果我转到Linux命令行并在其中一个路径上执行ls -la
,则表明目录或文件存在。我确保-e
也适用于目录,所以不是。可能是什么问题?
答案 0 :(得分:1)
<script src="https://unpkg.com/vue@latest/dist/vue.js"></script>
<div id="app">
<input type="text" v-model="query" placeholder="Search for a user" @focus="dimUsers()" @blur="undimUsers()">
<ul>
<li v-for="user in userList.users" :key="user.localized_name">
<img v-bind:src="user.portrait" class="userPortrait" :class="{'selectedUser': selectedUserPortrait.includes(user.portrait), 'dimmed': searching}" @click="loadUser(user)">
</li>
</ul>
<div>{{userSelected.localized_name}}</div>
</div>
才能删除换行符,该换行符终止了您从文件中读取的行。本质上,您是在检查chomp
是否存在,是否存在。我认为您打算打file␊
,但您打了chomp
。固定:
chmod
答案 1 :(得分:0)
@Shawn是正确的,并纠正chmod,并针对名为DUET.pl(蛋白质建模脚本)的文件对其进行测试。基本上“ DUET.pl \ n”不存在。您还需要在“ chmod”命令上添加一个exist语句,否则如果文件不存在,它将引发错误。
use strict;
use warnings;
my $input = '/Users/michaelg/Desktop/test.txt';
my $test_output = '/Users/michaelg/Desktop/out.txt';
open(my $fh_dst, '>>', $test_output) or die "$!";
open(my $fh_src, '<', $input) or die "$!";
while (my $file = <$fh_src>) {
chomp $file;
chmod (0755, $file) if -e $file;
print $fh_dst $file . "\n", unless -e $file;
}
close ($fh_src);
close ($fh_dst);
__DATA__
文件test.txt的内容是文件DUET.pl的路径。 DUET.pl存在于上述位置
/Users/michaelg/Desktop/DUET.pl
带有chomp,输出文件
(空白)
没有chomp,即#chomp $ file,输出文件(加上错误) /Users/michaelg/Desktop/DUET.pl
此外,带有排骨(壳),
ls -l /Users/michaelg/Desktop/DUET.pl
-rwxr-xr-x@ 1 michaelg staff xxx 4 Dec xx:xx DUET.pl
Without chomp,
-rwx------@ 1 michaelg staff xxx 4 Dec xx:xx DUET.pl
注意xx:xx时间戳已删除