Ответ 1
Я не вижу, как есть какая-то техническая причина для значимости заказа. Я всегда ставил use strict
сначала, как это происходит, но не потому, что я всегда это делал!
Я помню, как где-то был замечен какой-то комментарий,
use warnings;
use strict;
был предпочтительнее (вместо того, чтобы использовать strict
во-первых, как я обычно не делал). Правильно ли моя память? Имеет ли значение порядок, и если да, то каким образом?
Я не вижу, как есть какая-то техническая причина для значимости заказа. Я всегда ставил use strict
сначала, как это происходит, но не потому, что я всегда это делал!
Прост: если вы выполняете 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, заключается в том, что вы можете узнать новые вещи, о которых вы никогда не знали. Мне бы хотелось увидеть, есть ли у кого-то фактическая причина, почему это должно быть одним способом, а не другим.
Я подумал, может быть, на 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>
Это был выстрел в темноте. Я пришел к выводу, что, пока нет промежуточных заявлений, порядок несуществен.