Comment puis-je insérer du texte dans une chaîne de caractères en Perl?
Si j'ai eu:
$foo= "12."bar bar bar"|three";
comment pourrais-je les insérer dans le texte ".." à la fin du texte 12. dans la variable?
La question n'est pas vraiment clair. Je ne suis pas sûr de ce que vous essayez de faire.
Qu'est-ce exactement pensez-vous est dans votre variable $foo maintenant? Avez-vous essayé de courir qu'avec des avertissements activé?
Qu'est-ce exactement pensez-vous est dans votre variable $foo maintenant? Avez-vous essayé de courir qu'avec des avertissements activé?
OriginalL'auteur Tanami | 2009-03-15
Vous devez vous connecter pour publier un commentaire.
Perl vous permet de choisir votre propre citation délimiteurs. Si vous avez besoin d'utiliser un double guillemet à l'intérieur d'une interpolation de chaîne (c'est à dire
""
) ou une citation à l'intérieur d'un non-interpolation de chaîne (c'est à dire''
), vous pouvez utiliser un citation de l'opérateur pour spécifier un caractère différent à agir comme délimiteur pour la chaîne. Les délimiteurs sont de deux formes: entre crochets et unbracketed. Entre crochets, les délimiteurs ont différentes de début et de fin de caractères:[]
,{}
,()
,[]
, et<>
. Tous les autres caractères*
sont disponibles en tant que unbracketed délimiteurs.De sorte que votre exemple peut être écrite comme
Insérer du texte après "12." peut être fait de plusieurs façons (TIMTOWDI). Une solution courante est d'utiliser un substitution de faire correspondre le texte que vous souhaitez remplacer.
l' ^ signifie: correspond au début de la piqûre, le
()
signifie que la capture de ce texte à la variable$1
, le12
juste correspond à la chaîne"12"
, et la[]
dire correspondre à tous les caractères entre crochets. Les crochets sont utilisés parce que.
a une signification spéciale dans les regexes en général, mais pas à l'intérieur d'une classe de caractères (le[]
). Une autre option pour la classe de caractères est d'échapper à la signification particulière de.
avec\
, mais beaucoup de gens trouvent que, pour être plus laid que le caractère de classe.Une autre façon d'insérer du texte dans une chaîne de caractères est à attribuer de la valeur à un appel à
substr
. Cela souligne le de Perl assez unique caractéristiques: plusieurs de ses fonctions peuvent agir comme des lvalues. Est qu'ils peuvent être traités comme des variables.Si vous ne le saviez pas déjà, où
"12."
existe dans la chaîne que vous pourriez utiliserindex
de trouver où elle commence,length
pour savoir combien de temps "12.", puis utiliser ces informations avecsubstr
.Ici, c'est un script Perl qui contient le code ci-dessus.
*
tous les caractères sauf les caractères espace blanc (espace, tabulation, retour chariot, saut de ligne, tabulation verticale, et saut) qui estHeh, vous remarquerez peut-être peut-participation à PB croît et décroît. J'ai tendance à aller de PB quand je dois soit peu à faire, ou je suis tellement frustré que je ne peux pas obtenir un vrai travail de fait de toute façon. Tout cela fait partie de ma formation moi-même pour être un formateur (c'est pourquoi je aller pour l'hyper-réponses détaillées).
C'est un diable d'une réponse.
Je suis surpris que personne ne m'a appelé sur "Tous les autres caractères sont disponibles en tant que unbracketed délimiteurs." Les espaces ne sont pas valides délimiteurs.
Odd fait que j'ai découvert lors de tests pour s'assurer qu'il était seulement les espaces qui ne sont pas valides délimiteurs: backspace et delete sont valables délimiteurs. Cela me donne une nouvelle idée pour Acme::l'eau de Javel.
OriginalL'auteur Chas. Owens
Si vous souhaitez utiliser des guillemets dans une chaîne de caractères en Perl, vous avez deux options principales:
ou:
La première option s'échappe de l'guillemets à l'intérieur de la chaîne de barre oblique inverse.
La deuxième option utilise des guillemets simples. Cela signifie que les guillemets sont traités comme faisant partie de la chaîne. Toutefois, dans des guillemets simples, tout est littéral pour
$var
ou@array
n'est pas traitée comme une variable. Par exemple:Mais:
Il y a également un grand nombre d'autres Devis-comme les Opérateurs vous pouvez utiliser à la place.
OriginalL'auteur Dave Webb
OriginalL'auteur Geo