Что я должен вставить свой шаблон начинающего для моих программ Perl? [закрытый]

Кластерные индексы хранятся физически на таблице. Это означает, что они являются самыми быстрыми, и у Вас может только быть один кластерный индекс на таблицу.

Некластерные индексы хранятся отдельно, и у Вас может быть столько, сколько Вы хотите.

наилучший вариант состоит в том, чтобы установить Ваш кластерный индекс на наиболее используемом уникальном столбце, обычно PK. У Вас должен всегда быть хорошо выбранный кластерный индекс в Ваших таблицах, если очень неопровержимый довод - не может думать о единственном, но эй, это может быть там - для того, чтобы не сделать так подходит.

10
задан knorv 13 December 2009 в 22:46
поделиться

10 ответов

Замените -w на используйте предупреждения . Это позволяет вам лексически отключить предупреждения, если вам это нужно. См. perllexwarn .

Прагма use utf8 предназначена для случаев, когда ваш исходный код находится в UTF-8. Если это так, отлично. Если нет ... Я не рекомендую добавлять вещи, которыми вы на самом деле не пользуетесь. Точно так же не t установите для STDOUT значение UTF-8, если вы на самом деле его не создаете.

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

Мне нравится включать оператор, явно указывающий минимальную версию Perl, необходимую для запуска сценария. Это делает сообщения об ошибках более значимыми, если они не компилируются из-за того, что кто-то использует более старую версию Perl. например,

BEGIN { require 5.00801 }

Я использую это заклинание вместо чего-то вроде , использую v5.8.1 , потому что оно обратно совместимо с версиями Perl, которые я пытаюсь «поддержать» с помощью значимого сообщения об ошибке.

s необходимо.

Мне нравится включать оператор, явно указывающий минимальную версию Perl, необходимую для запуска сценария. Это делает сообщения об ошибках более значимыми, если они не компилируются из-за того, что кто-то использует более старую версию Perl. например,

BEGIN { require 5.00801 }

Я использую это заклинание вместо чего-то вроде , использую v5.8.1 , потому что оно обратно совместимо с версиями Perl, которые я пытаюсь «поддержать» с помощью значимого сообщения об ошибке.

s необходимо.

Мне нравится включать оператор, явно указывающий минимальную версию Perl, необходимую для запуска сценария. Это делает сообщения об ошибках более значимыми, если они не компилируются из-за того, что кто-то использует более старую версию Perl. например,

BEGIN { require 5.00801 }

Я использую это заклинание вместо чего-то вроде , использую v5.8.1 , потому что оно обратно совместимо с версиями Perl, которые я пытаюсь «поддержать» с помощью значимого сообщения об ошибке.

18
ответ дан 3 December 2019 в 13:23
поделиться

Вот мой, хотя должен признать, что иногда я просто начинаю печатать без использования шаблона. Я установил его как modulino, чтобы потом было легко добавить к нему тестирование:

#!perl
package App::XXX;

use utf8;
use 5.010;

use strict;
use warnings;
use vars qw($VERSION);

$VERSION = '0.01_01';

__PACKAGE__->run( @ARGV ) unless caller;

sub run
    {
    my( $class, @args ) = @_;


    }

1;

Если вы хотите автоматически установить для всех файловых дескрипторов некоторую кодировку, вы можете добавить прагму open :

 use open IO => ':utf8';

У меня есть еще один шаблон для документации, который я добавлю позже.

Кроме того, у некоторых людей есть последовательности редакторов, которые они добавляют в виде комментариев вверху или внизу скрипта. Возможно:

# -*- Mode: cperl; coding: utf-8; cperl-indent-level: 4 -*-
# vim: ts=4 sts=4 sw=4:

Поскольку я помещаю свои скрипты в дистрибутивы, процесс установки автоматически исправляет строку shebang, поэтому не имеет значения, что я туда помещаю.

11
ответ дан 3 December 2019 в 13:23
поделиться

Как насчет добавления документации?

=head1 NAME

name here

=head2 SYNOPSIS

short synopsis here
8
ответ дан 3 December 2019 в 13:23
поделиться

Не то, чтобы этого можно было достичь в шаблоне как таковом, но вы можете применить лучшие практики Perl, заставив разработчиков запускать perltidy и perlcritic ] во всем исходном коде. Кроме того, если вы спросите меня, обязательно прочтите Perl Best Practices .

Что касается вашего шаблона, единственное, что вам следует изменить, - это скобки после встроенной функции binmode , поскольку они не требуются (это одна из многих рекомендаций в книге).

4
ответ дан 3 December 2019 в 13:23
поделиться

Измените строку интерпретатора на

#!/usr/bin/env perl

Это не позволит вам использовать -w, поэтому вам также придется

use warnings;
3
ответ дан 3 December 2019 в 13:23
поделиться

Еще одна вещь, на которую вы, возможно, захотите посмотреть, - это модуль Toolkit на CPAN. Созданный Дэмианом Конвеем, он позволяет вам собрать набор часто используемых модулей, а затем использовать одну строку «использовать» вместо нескольких. Таким образом, вместо

use strict;
use warnings;
use foo;
use bar;

у вас будет;

use Toolkit;

и будут доступны все модули, которые вы разместили в своем наборе инструментов.

2
ответ дан 3 December 2019 в 13:23
поделиться

Я никогда не использую строку shebang в моих сценариях .pl и не использую , используйте lib / path / to / special / lib , поэтому чтобы их можно было настраивать для каждого вызова:

perl -I/path/to/special/lib myscript.pl

/usr/local/perl5.10 -I/different/path/to/lib myscript.pl

И, конечно же, каждый файл начинается с:

use strict;
use warnings;

Edit : Я подумал еще о нескольких вещах, которые я начал использовать совсем недавно:

# at least while the project is in initial development, so as to
# expose more places where the module might die; maybe turn off
# in production, depending on what other error handling is in place
use autodie;

# ...after all other 'use' lines at the top of a module: remove all
# unwanted imports cluttering up our namespace
use namespace::autoclean;
1
ответ дан 3 December 2019 в 13:23
поделиться

Я бы сказал, что вы хотите включить в свой шаблон стандартный набор документации POD с обычным набором заголовков, который вы видите в большинстве модулей на CPAN. Мне нравится включать это в конце, но вам может понравиться это вверху или даже вкраплениями в коде. например, в конце:

1;
__END__

=head1 NAME

My::Foo - The great new My::Foo!

=head1 VERSION

Version 0.01

=head1 SYNOPSIS

=head1 DESCRIPTION

=head1 METHODS 

=head2 new

=head1 AUTHOR

=head1 BUGS

=head1 ACKNOWLEDGEMENTS

=head1 COPYRIGHT & LICENSE

This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.

=cut

Я считаю, что пишу свой модуль так, как если бы я собирался выпустить его на CPAN, даже если у меня ничего не получится, это хорошая идея. Дополнительные сведения и передовой опыт можно найти в модуле-стартере . Модуль sudo cpan :: Стартер . Этот удобный небольшой инструмент создаст вам полный каркас модуля, который очень поучительно будет просматривать. например

$ module-starter --module=My::Foo --author=markp --email=markp@example.com --mb
$ tree My-Foo
2
ответ дан 3 December 2019 в 13:23
поделиться

Для меня не имеет смысла, что вы хотели бы по умолчанию отключить буферизацию.

1
ответ дан 3 December 2019 в 13:23
поделиться

Хотя не все, что я делаю на Perl, предназначено для Интернета, это случается достаточно часто, чтобы я был вынужден добавить:

use CGI :: Carp qw (fatalsToBrowser);

к моему шаблон разработки, который я комментирую, когда он попадает в производство.

1
ответ дан 3 December 2019 в 13:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: