Percursos
/
Perl
Perl
/
Exercícios
/
Marcações para a beleza
Marcações para a beleza

Marcações para a beleza

Exercício de aprendizagem

Introdução

Pacotes e módulos

Importação

Normalmente, um módulo é carregado com a palavra-chave use. Isto carrega o módulo e chama o método import, importando quaisquer símbolos exportados.

Os símbolos no array @EXPORT do pacote são importados por predefinição. Os símbolos no array @EXPORT_OK do pacote têm de ser importados explicitamente.

Exportação

Para que um símbolo seja importado, primeiro tem de ser exportado. O módulo Exporter vem incluído com o Perl e é uma das opções mais convenientes para exportar.

Definição do módulo:

package Foo;

use Exporter ('import');
our @EXPORT_OK = ('bar');

sub bar { ... }

Utilização do módulo:

use Foo ('bar');

bar();

Módulos principais

Além do Exporter, o Perl tem uma grande variedade de módulos principais disponíveis para usar. Alguns exemplos úteis para exercícios que podes encontrar aqui incluem o List::Util, o Time::Piece e o Math::BigRat.

CPAN

Além dos módulos principais, o CPAN tem milhares de módulos adicionais criados pela comunidade Perl disponíveis para instalação. O percurso de Perl usa um cpanfile para instalar uma seleção de módulos que podem ser usados com o test runner de Perl do Exercism.

Instruções

Neste exercício vais trabalhar num agendador de marcações para um salão de beleza.

Tens três tarefas, todas elas relacionadas com datas de marcações.

1. Verifica se uma marcação já passou

Implementa a sub-rotina appointment_has_passed, que recebe uma string de data e verifica se a marcação já ficou no passado:

appointment_has_passed("2019-07-25T13:45:00")
// => true

As strings de data são passadas no formato de data e hora ISO 8601: YYYY-mm-ddTHH:MM:SS

Vais precisar de implementar a sub-rotina privada _parse_datetime. Sugerimos-te um par de módulos:

2. Verifica se a marcação é à tarde

Implementa a função is_afternoon_appointment, que recebe uma string de data e verifica se a marcação é à tarde (>= 12:00 e < 18:00):

is_afternoon_appointment("2019-07-25T13:45:00")
// => true

3. Descreve a hora e a data da marcação

Implementa a função describe_appointment, que recebe uma string de data e devolve uma descrição dessa data e dessa hora:

describe_appointment("2019-07-25T13:45:00")
// => "You have an appointment on 07/25/2019 1:45 PM"

Repara que a hora está no intervalo 0-12 e não tem zero à esquerda nem espaço.

Editar via GitHub A ligação abre numa nova janela ou separador
Perl Exercism

Estás pronto para começar Marcações para a beleza?

Inscreve-te no Exercism para aprenderes e dominares Perl com 5 conceitos84 exercícios, e mentoria humana real, tudo grátis.