Подтвердить что ты не робот

Есть ли причина использовать предупреждения перед использованием строго?

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

use warnings;
use strict;

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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

#! /usr/bin/perl -W

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

#! /usr/bin/perl -W

use strict;

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

#! /usr/bin/perl

use warnings;
use strict;

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

Ответ 3

Я подумал, может быть, на 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>

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