Perl -e masukkan baris baru [duplikat]

0

Kemungkinan Gandakan:
masukkan baris baru dalam pernyataan perl -e

Hai

Jika saya melakukan ini di bash

perl -e '$x; $y'

Apakah ada karakter yang bisa berperilaku seperti baris baru?

yaitu saya ingin melakukan

perl -e '$x; some_chars_as_new_line $y'

di mana some_chars_as_new_line mungkin \, bukan meta character.

di mana perl interpreter benar-benar melihat baris baru yang sebenarnya.

$x; 
$y;

Terimakasih banyak

portoalet
sumber
tolong jangan gandakan. Anda dapat mengedit pertanyaan Anda sebelumnya untuk menambahkan informasi jika perlu.
quack quixote
ini adalah pertanyaan yang sedikit berbeda superuser.com/questions/123467/… (yang telah dijawab) Tolong jangan ditutup.
portoalet
ok, ya, saya melihat perbedaan kecil. tapi ada jawaban untuk pertanyaan Anda yang lain (yaitu saya hanya diperluas) yang menjawab pertanyaan ini juga. (dikabulkan, tidak sebaik jawaban Chris di bawah ...) karena mereka sangat terkait (mereka memiliki judul yang hampir sama), saya masih berpikir mereka harus berada dalam satu posting.
quack quixote

Jawaban:

-1

Pertanyaan yang Anda tanyakan hanya menyangkut bagaimana shell menginterpretasikan inputnya dan meneruskannya ke program lain. Ini tidak ada hubungannya dengan Perl, per se.

Anda seharusnya bisa memasukkan ini ke dalam skrip:

foo '$x;
$y;'

Argumen yang diberikan kepada perintah akan memiliki baris baru di tempat yang sama seperti di skrip itu sendiri. Anda mungkin perlu berhati-hati untuk menyimpan skrip sedemikian rupa sehingga berakhir dengan jeda baris Unix-style (LF-only), jika tidak, Anda mungkin mendapatkan CR + LF (jeda baris DOS / Windows) atau hanya CR Reaks lineb gaya Mac). Anda juga dapat melakukan ini pada prompt interaktif, tetapi Anda akan melihat prompt lanjutan sebelum baris kedua dan selanjutnya:

$ foo '$x;
> $y;'

Di pesta , Anda juga dapat menggunakan $'' mengutip sintaks untuk menyandikan karakter baris baru seperti ini:

foo $'$x;\n$y;'

Argumen yang diteruskan ke program akan diperlakukan dengan cara yang mirip dengan string ANSI C. Jika Anda ingin garis miring terbalik yang sebenarnya dalam string, Anda harus menghindarinya \\, sebagai gantinya.

Jadi, jika Anda benar-benar menginginkan string literal yang mengutip tanda kutip tunggal memberi Anda, Anda mungkin harus tetap dengan baris baru yang tertanam sehingga Anda tidak perlu khawatir tentang pelarian tambahan.

Chris Johnsen
sumber
@ Chris: pertanyaan ini akan ditutup sebagai duplikat; tolong posting ini ke duplikat dan hapus di sini. (Anda akan kehilangan downvote saat melakukannya!)
quack quixote
@ quack: Saya tidak begitu peduli dengan downvote bahwa saya akan menyalin jawaban ini ke pertanyaan lain yang ada (lagi pula, mungkin downvoted di sana juga). Saya ingin melihat orang lain yang ditanyai secara eksplisit diperluas untuk memasukkan pengertian input awal ’(bersama dengan indra / sunting / sisipkan 'asli). Tetapi perwakilan editor saya terlalu segar untuk memulai penulisan ulang tanpa persetujuan OP. @lydonchandra, IMO, pertanyaan-pertanyaan ini cukup dekat sehingga bisa digabung. Saya bisa melakukannya jika Anda suka (katakan saja "maju, gabungkan mereka"). Anda dapat dengan mudah mengembalikan perubahan jika Anda tidak menyukai hasilnya.
Chris Johnsen
Saya telah melanjutkan dan mengedit pertanyaan lain untuk memasukkan kedua bagian, jadi jawaban ini sekarang ada di topik di sana. jika Anda tidak ingin memposting ulang, itu dapat dipindahkan oleh mod di beberapa titik di masa depan.
quack quixote