#!/user/bin/perl

# Infos: 	le symbole "=>" montre ce qui s'affiche en ligne de commande.
#			Le NB est une simple remarque à retenir.

# Création de scalaires
# Affichage du texte et création des variables
	print "Un dromadaire n'a qu'une seule bosse", "\n"; # => Un dromadaire n'a qu'une seule bosse NB: Le "\n" indique un retour à la ligne et doit, par souci de clareté, être systématiquement écrit.
		$a = 1;
		$b = "2"; # NB: les guillemets signifient, à la base, une chaîne de caractères.
	print $a + $b, "\n"; # ==> 3 NB: Perl est permissif, il comprend un addition malgré les guillemets.

# Création de listes
	@liste = (1, "un", $a, $b);
	print "@liste\n"; # => 1 un 1 2
	# possible avec une expression regulière
		@alphabet = (a..z);
		print "@alphabet\n"; # => abcdefghijklmnopqrstuvwxyz
		@chiffre = (1..9); # => 123456789
		print "@chiffre\n";
		print "@Chiffre[2]\n"; # => 3 NB: indexation à partir de zéro
	# exemple avec les mois
		@AN = ("Janvier", "Février", "Mars");
		print "@AN\n";
		print "@AN[0, 2]\n"; # ==> Janvier Mars

		# Les fonctions
			push @AN, "Avril"; # push ajoute l'élément en fin de liste.
			print "@AN\n"; # ==> Janvier Février Mars Avril

			pop @AN; # pop supprime l'élément en fin de liste et le renvoie.
			print "@AN\n"; # ==> Janvier Février Mars

			unshift @AN, "Décembre"; # push ajoute l'élément en début de liste.
			print "@AN\n"; # ==> Décembre Janvier Février Mars

			shift @AN; # shift supprime l'élément en début de liste et le renvoie.
			print "@AN\n"; # ==> Janvier Février Mars

			delete @AN[2];
			print "@AN\n"; # ==> Janvrier Février

			@chffr = (3, 1, 2);
			print "@chffr\n";# ==> 321 NB: ordre non respecté

			sort @chffr;
			print "@chffr\n";

			reverse @chffr;
			print "@chffr\n";

# Création de chaînes
	print $chaine = "La plaine, la vallée et la clairière", "\n";
	@chn = split (/a/, $chaine); # split découpe une chaîne
	print "@chn\n"; # ==> L pl ine, l  v llée et l  cl irière

# Tableau associatif, hashtag: conteneur reposant sur un ordre clé/valeur
	%ass = (1, "A", 2, "B", 3, "C"); # NB: clés = 1 2 3; valeurs = A B C 
	print %ass, "\n"; # ==> B2C3A1 NB: ordre non respecté
	print $ass{2}, "\n"; # ==> B
		print keys %ass, "\n"; # ==> CAB
		print values %ass, "\n"; # ==> 312

	# foreach: boucle afin de pouvoir traiter chacun des éléments d'une liste ou d'un tableau. 
		$compteur = 0;
		@element = (g, n, j);
		foreach my $elem(@element)
		{
			print $elem, "\n"; # ==> Affichage de la totatité des élements de la liste.
			$compteur++;
		}
		foreach my $element(keys %ass) # ou values à la place de keys
		{
			print $element, "\n"; # ==> 1 2 3 NB: ordre non respecté
		}
#-----------------------------------------------------------------------------------------