что значит perl use Cwd qw ();?

что значит

use Cwd qw(); 

среднее значение в perl?

Я знаю, что qw дает кавычки для каждого элемента внутри () Но как насчет этого дела?

3 ответов


на qw() это причудливый способ написания пустого списка. Делать () будет на два символа короче.

передача пустого списка use важно избежать импорт. От use документация:

если вы не хотите вызывать метод импорта пакета (например, чтобы остановить изменение пространства имен), явно укажите пустой список

Е. Г. по умолчанию Cwd экспорт модуль getcwd. Этого не произойдет, если мы дадим ему пустой список:

use strict;
use Cwd;
print "I am here: ", getcwd, "\n";

работает, а

use strict;
use Cwd ();
print "I am here: ", getcwd, "\n";

прерывает компиляцию с Bareword "getcwd" not allowed while "strict subs" in use.


Я верю, что с qw() после use Module предназначен для импорта подпрограмм, когда он остается пустым, он просто загружает модуль, но не импортирует подпрограммы в пространство имен.

например, это вызывает ошибку, так как getcwd не импортируется:

#!/usr/bin/perl
use warnings;
use strict;
use Cwd qw();
my $dir=getcwd;

но я не уверен, что это тот ответ, который вы искали..!


обычно он" импортирует " команды, поэтому вам не нужно создавать объект и вызывать функцию на них.

пример (из perlmonks):

 #without qw
 use CGI;
 my $q = CGI->new();
 my $x = $q->param('x');

 #with qw
 use CGI qw/:standard/;
 my $x = param("x")

источник:http://www.perlmonks.org/?node_id=1701

большинство модулей имеют группы импорта, такие как: all или: standard.