Есть ли причина использовать предупреждения перед использованием строго? - PullRequest
11 голосов
/ 20 июня 2011

Я помню, как видел где-то комментарий, что

use warnings;
use strict;

предпочтительнее (вместо того, чтобы сначала использовать strict, как я обычно это делал).Моя память верна?Имеет ли значение порядок и если да, то каким образом?

Ответы [ 3 ]

6 голосов
/ 20 июня 2011

Я не понимаю, какова техническая причина значимости заказа. Я всегда ставлю use strict на первое место, как это происходит, но только по той причине, что я всегда это делал!

3 голосов
/ 21 июня 2011

Я подумал, может быть, на Perl 5.8.9 и старше, где strict не предупреждает, когда вы use Strict в нечувствительных к регистру файловых системах, сначала поможет warnings.Я собрал 5.8.9 в своей системе Windows XP, и это не так:

C:\Temp> cat t.pl
use warnings;
use Strict;

C:\Temp> c:\opt\perl-5.8.9\bin\perl.exe t.pl

C:\Temp>

Это был выстрел в темноте.Я пришел к выводу, что до тех пор, пока нет никаких промежуточных заявлений, порядок не имеет значения.

3 голосов
/ 20 июня 2011

Простой: если вы введете use strict до того, как наберете use warnings, вы не получите предупреждение, если неправильно введете use strict. ДУХ!

На самом деле, я всегда делал это по-другому. Анальное удержание заставило меня поместить две прагмы в алфавитном порядке. Я никогда не знал, что была причина сделать это так или иначе.

Черт, использование perldoc показывает размещение use strict перед use warnings, и это то, что я видел в большинстве официальных примеров Perl.

Я подозреваю, что есть культурная причина. Изначально в Perl для использования предупреждений вы использовали

#! /usr/bin/perl -W

в первой строке вашей программы. Прагма use strict появилась позже, и только позже была use warnings прагма. Таким образом, программы (на некоторое время) были записаны как:

#! /usr/bin/perl -W

use strict;

Когда параметр -W вышел из моды, вы просто добавили use warnings прямо под шебангом:

#! /usr/bin/perl

use warnings;
use strict;

Одна из вещей, которые мне нравятся в Stackoverflow, это то, что вы можете изучать новые вещи, которые вы никогда не знали раньше. Мне бы очень хотелось узнать, есть ли у кого-то реальная причина, почему это должно быть так, а не иначе.

...