Я новичок в модуле File :: Slurp, и в моем первом тесте он не дал ожидаемых результатов.Мне потребовалось некоторое время, чтобы понять это, так что теперь меня интересует, почему я вижу такое поведение.
Мой вызов File :: Slurp выглядел так:
my @array = read_file( $file ) || die "Cannot read $file\n";
Я включил часть «die», потому что я привык делать это при открытии файлов.Мой @array всегда будет содержать все содержимое файла в первом элементе массива.Наконец, я вынул раздел «|| die», и он начал работать так, как я ожидал.
Вот пример для иллюстрации:
perl -de0
Loading DB routines from perl5db.pl version 1.22
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(-e:1): 0
DB<1> use File::Slurp
DB<2> $file = '/usr/java6_64/copyright'
DB<3> x @array1 = read_file( $file )
0 'Licensed material - Property of IBM.'
1 'IBM(R) SDK, Java(TM) Technology Edition, Version 6'
2 'IBM(R) Runtime Environment, Java(TM) Technology Edition, Version 6'
3 ''
4 'Copyright Sun Microsystems Inc, 1992, 2008. All rights reserved.'
5 'Copyright IBM Corporation, 1998, 2009. All rights reserved.'
6 ''
7 'The Apache Software License, Version 1.1 and Version 2.0'
8 'Copyright 1999-2007 The Apache Software Foundation. All rights reserved.'
9 ''
10 'Other copyright acknowledgements can be found in the Notices file.'
11 ''
12 'The Java technology is owned and exclusively licensed by Sun Microsystems Inc.'
13 'Java and all Java-based trademarks and logos are trademarks or registered'
14 'trademarks of Sun Microsystems Inc. in the United States and other countries.'
15 ''
16 'US Govt Users Restricted Rights - Use duplication or disclosure'
17 'restricted by GSA ADP Schedule Contract with IBM Corp.'
DB<4> x @array2 = read_file( $file ) || die "Cannot read $file\n";
0 'Licensed material - Property of IBM.
IBM(R) SDK, Java(TM) Technology Edition, Version 6
IBM(R) Runtime Environment, Java(TM) Technology Edition, Version 6
Copyright Sun Microsystems Inc, 1992, 2008. All rights reserved.
Copyright IBM Corporation, 1998, 2009. All rights reserved.
The Apache Software License, Version 1.1 and Version 2.0
Copyright 1999-2007 The Apache Software Foundation. All rights reserved.
Other copyright acknowledgements can be found in the Notices file.
The Java technology is owned and exclusively licensed by Sun Microsystems Inc.
Java and all Java-based trademarks and logos are trademarks or registered
trademarks of Sun Microsystems Inc. in the United States and other countries.
US Govt Users Restricted Rights - Use duplication or disclosure
restricted by GSA ADP Schedule Contract with IBM Corp.
'
Почему ||умереть изменить ситуацию?У меня есть ощущение, что это может быть больше вопрос о приоритете Perl, чем вопрос File :: Slurp.Я посмотрел в модуле File :: Slurp, и похоже, что он настроен на квакинг, если есть проблема, поэтому я думаю, что правильный способ сделать это - позволить File :: Slurp квакать за вас.Теперь мне просто любопытно, почему я видел эти различия.