Je prévois d'apprendre Perl 5 et comme je n'ai utilisé que PHP jusqu'à présent, je voulais en savoir un peu plus sur les différences entre les langages.
Comme PHP a commencé comme un ensemble de "hacks Perl", il a évidemment cloné certaines fonctionnalités de Perls.
Quelles sont les principales différences de syntaxe? Est-il vrai qu'avec Perl, vous avez plus d'options et de moyens d'exprimer quelque chose?
Pourquoi Perl n'est-il plus utilisé très souvent pour les sites Web dynamiques? Qu'est-ce qui a rendu PHP plus populaire?
Réponses:
Perl et PHP sont plus différents que pareils. Considérons Perl 5, puisque Perl 6 est toujours en développement. Quelques différences, regroupées grossièrement par sujet:
=~
,!~
), quote-like (qw
,qx
& c.), Exponentiation (**
), string repetition (x
) et range (..
and...
). PHP a quelques opérateurs que Perl n'a pas, tels que l' opérateur de suppression d'erreurs (@
),instanceof
(bien que Perl ait laUniversal::isa
méthode) etclone
.new
est un opérateur. En Perl, c'est le nom conventionnel d'un sous-programme de création d'objets défini dans des packages, rien de spécial en ce qui concerne le langage.Les opérateurs logiques Perl renvoient leurs arguments, tandis qu'ils renvoient des booléens en PHP. Essayer:
dans chaque langue. En Perl, vous pouvez même
$foo ||= 'default'
définir $ foo sur une valeur si elle n'est pas déjà définie. Le moyen le plus court de faire cela en PHP est$foo = isset($foo) ? $foo : 'default';
(Mettre à jour, dans PHP 7.0+, vous pouvez le faire$foo = $foo ?? 'default'
)$foo
qu'une variable différente de@foo
ou%foo
.extract
fonction.undefined
(voir perldata ). Les tableaux PHP sont rares; définir un élément ne définira pas les éléments intermédiaires.array_slice
pour extraire une tranche et l'array_splice
attribuer à une tranche.local
mot - clé.goto
fonction.Perl aplatit les listes (voir perlsub ); pour les structures de données non aplaties, utilisez des références.
PHP n'aplatit pas les tableaux.
BEGIN
,UNITCHECK
,CHECK
,INIT
etEND
) qui sont exécutées. Contrairement à PHPauto_prepend_file
etauto_append_file
, il n'y a pas de limite au nombre de chaque type de bloc de code. De plus, les blocs de code sont définis dans les scripts, tandis que les options PHP sont définies dans les fichiers de configuration du serveur et par répertoire.$bam[-1]
est le dernier élément du tableau. Les indices négatifs en PHP sont des indices comme les autres.$obj->method(@args)
se traduit par quelque chose comme(ref $obj)::method($obj, @args)
. Liste non exhaustive:$this
dans les méthodes. Perl passe une référence à l'objet comme premier argument aux méthodes.@ISA
variable packages .//
est un opérateur. En PHP, c'est le début d'un commentaire d'une ligne.create_function
fonction) et aucun support pour les fermetures.$@
(eval
au lieu detry
,die
au lieu dethrow
). Le moduleErrorTry :: Tiny prend en charge les exceptions telles que vous les trouvez dans d'autres langues (ainsi que certains autres modules répertoriés dans la section Voir aussi Error ).PHP a été inspiré par Perl de la même manière que Phantom of the Paradise a été inspiré par Phantom of the Opera , ou Strange Brew a été inspiré par Hamlet . Il est préférable de ne pas penser aux spécificités du comportement de PHP lorsque vous apprenez Perl, sinon vous serez trébuché.
Mon cerveau me fait mal maintenant, alors je vais m'arrêter.
la source
@array = qw(a b c)
et que vous faites$array[4] = 'e'
, le contenu du tableau n'est pas exactement('a', 'b', 'c', undef, 'e')
; ils sont('a', 'b', 'c',
inexistants ,'e')
. Autrement dit, le[3]
slot ne contient pas de pointeur vers un scalaire qui est undef; il ne contient rien du tout (et l'exists
opérateur le teste). Une petite différence, mais une différence. :)$foo
si elle n'est pas déjà définie peut êtreisset($foo) || $foo='default';
Lorsque PHP est entré en scène, tout le monde a été impressionné par les principales différences avec Perl:
<?php ... ?>
où. Pas de modèles ennuyeux.Au fil du temps, tout le monde a appris qu'ils n'étaient pas un avantage, hehe ...
la source
J'ai remarqué que la plupart des pages PHP par rapport à Perl semblent être
ilk, et font rarement des comparaisons raisonnables.
Sur le plan de la syntaxe, vous constaterez que PHP est souvent plus facile à comprendre que Perl, en particulier lorsque vous avez peu d'expérience. Par exemple, couper une chaîne d'espaces blancs de début et de fin en PHP est simplement
En Perl, c'est le plus cryptique
(Je pense que c'est légèrement plus efficace qu'une capture et un remplacement d'une seule ligne, et aussi un peu plus compréhensible.) Cependant, même si PHP est souvent plus anglais, il montre parfois ses racines comme un wrapper pour le bas niveau C, par exemple,
strpbrk
etstrspn
sont probablement rarement utilisés, car la plupart des utilisateurs de PHP écrivent leurs propres fonctions équivalentes pour quelque chose de trop ésotérique, plutôt que de passer du temps à explorer le manuel. Je m'interroge également sur les programmeurs pour qui l'anglais est une deuxième langue, car tout le monde est sur un pied d'égalité avec des choses comme Perl, devant l'apprendre à partir de zéro.J'ai déjà mentionné le manuel. PHP a un bon manuel en ligne, et malheureusement il en a besoin. J'y fais encore référence de temps en temps pour des choses qui devraient être simples, comme l'ordre des paramètres ou la convention de dénomination des fonctions. Avec Perl, vous vous trouverez êtes probablement référence au manuel d' un lot que vous avez commencé et puis un jour , vous aurez une a-ha moment et jamais besoin de nouveau. Eh bien, du moins pas jusqu'à ce que vous soyez plus avancé et que vous vous rendiez compte que non seulement il y a plus d'un moyen, il y a probablement un meilleur moyen, quelqu'un d'autre l'a probablement déjà fait de la meilleure façon, et peut-être que vous devriez simplement visiter CPAN.
Perl a beaucoup plus d'options et de façons d'exprimer les choses. Ce n'est pas nécessairement une bonne chose, même si cela permet au code d'être plus lisible s'il est utilisé à bon escient et au moins de l'une des manières que vous êtes susceptible de connaître. Il y a certains styles et idiomes dans lesquels vous vous retrouverez, et je vous recommande vivement de lire les meilleures pratiques de Perl (le plus tôt possible), ainsi que Perl Cookbook, deuxième édition pour vous familiariser avec la résolution des problèmes courants.
Je pense que la raison pour laquelle Perl est moins utilisé dans les environnements d'hébergement partagé est qu'historiquement, la lenteur perçue de CGI et la réticence des hôtes à installer mod_perl en raison de problèmes de sécurité et de configuration ont fait de PHP une option plus attrayante. Le cycle s'est ensuite poursuivi, plus de gens ont appris à utiliser PHP parce que plus d'hôtes l'ont proposé, et plus d'hôtes l'ont proposé parce que c'est ce que les gens voulaient utiliser. Les différences de vitesse et les problèmes de sécurité sont rendus évidents par FastCGI ces jours-ci, et dans la plupart des cas, PHP est également à court de FastCGI, plutôt que de le laisser au cœur du serveur Web.
Que ce soit le cas ou non ou qu'il y ait d'autres raisons, PHP est devenu populaire et une myriade d'applications y ont été écrites. Pour la majorité des gens qui veulent juste un site Web d'entrée de gamme avec un simple blog ou une galerie de photos, PHP est tout ce dont ils ont besoin, c'est ce que les hébergeurs font la promotion. Rien ne devrait vous empêcher d'utiliser Perl (ou tout autre élément de votre choix) si vous le souhaitez.
Au niveau de l'entreprise, je doute que vous trouviez trop de PHP en production (et s'il vous plaît, personne ne veut de Facebook comme contre-exemple, j'ai dit au niveau de l' entreprise ).
la source
$str =~ s/^\s+|\s+$//g;
Perl est beaucoup utilisé pour les sites Web, pas moins que Python et Ruby par exemple. Cela dit, PHP est utilisé beaucoup plus souvent que n'importe lequel d'entre eux. Je pense que les facteurs les plus importants sont la facilité de déploiement de PHP et la facilité de commencer avec lui.
Les différences de syntaxe sont trop nombreuses pour être résumées ici, mais il est généralement vrai qu'il y a plus de façons de s'exprimer (c'est ce qu'on appelle TIMTWOTDI, il y a plus d'une façon de le faire).
la source
Ce que je préfère à propos de Perl, c'est la façon dont il gère les tableaux / listes. Voici un exemple de la façon dont vous créeriez et utiliseriez une fonction Perl (ou "sous-programme"), qui l'utilise pour les arguments:
En PHP, vous pouvez faire une chose similaire avec
list()
, mais ce n'est pas tout à fait la même chose; dans les listes et les tableaux Perl sont en fait traités de la même manière (généralement). Vous pouvez également faire des choses comme:Et une autre différence que vous DEVEZ connaître, ce sont les opérateurs de comparaison numérique / chaîne. En Perl, si vous utilisez
<
,>
,==
,!=
,<=>
, et ainsi de suite, Perl convertit les deux opérandes vers des numéros. Si vous voulez convertir en tant que chaînes à la place, vous devez utiliserlt
,gt
,eq
,ne
,cmp
(les équivalents respectifs des opérateurs énumérés précédemment). Exemples où cela vous mènera vraiment:la source
Je n'ai pas besoin d'ajouter quoi que ce soit à la réponse fantastique d'Outis, je veux seulement montrer la réponse pour votre question:
Veuillez d'abord consulter quelques sites «Job Trends» - et vous pourrez vous prononcer seul.
comme vous pouvez le voir, perl est toujours un leader - mais préférable pour les applications réelles et non pour les jouets. :)
la source