Saya baru saja menggunakan kode ini untuk memeriksa apakah sebuah string kosong:
if ($str == "")
{
// ...
}
Dan juga sama dengan operator tidak sama ...
if ($str != "")
{
// ...
}
Ini sepertinya berhasil (menurut saya), tetapi saya tidak yakin itu cara yang benar, atau jika ada kelemahan yang tak terduga. Sesuatu terasa tidak benar tentang itu.
perl
string
comparison
Nick Bolton
sumber
sumber
Karena cara string disimpan di Perl, mendapatkan panjang string dioptimalkan.
if (length $str)
adalah cara yang baik untuk memeriksa bahwa string tidak kosong.Jika Anda berada dalam situasi di mana Anda belum berhati-hati
undef
, maka jawaban untuk "tidak kosong" yang tidak akan memperingatkan adalahif (defined $str and length $str)
.sumber
if (length($str))
merupakan pendekatan yang bagus dan tidak gagal jika variabel tidak ditentukan.Anda mungkin ingin menggunakan "eq" daripada "==". Jika Anda khawatir tentang beberapa kasus tepi, Anda mungkin juga ingin memeriksa tidak terdefinisi:
sumber
Seperti yang sudah disebutkan oleh beberapa orang,
eq
apakah operator yang tepat disini.Jika Anda berada
use warnings;
dalam skrip Anda, Anda akan mendapatkan peringatan tentang ini (dan banyak hal berguna lainnya); Saya akan merekomendasikanuse strict;
juga.sumber
use strict
tetapi saya memperbarui beberapa kode lama, jadi ketika saya menambahkan ini saya mendapatkan ratusan kesalahan. Saya mungkin akan memperbaikinya suatu hari nanti.Konsep dari cara yang "tepat" untuk melakukan apapun, selain menggunakan CPAN, tidak ada di Perl.
Bagaimanapun itu adalah operator numerik, Anda harus menggunakan
atau
sumber
if ($foo == "")
, misalnya, adalah definitif salah kecuali Anda benar-benar berarti untuk menguji untuk apakah$foo
, dievaluasi dalam konteks numerik, memiliki nilai 0 (dalam hal ini akan masih lebih baik ditulis sebagaiif ($foo == 0)
, karena itu lebih jelas mengungkapkan Anda maksud).Untuk memeriksa string kosong, Anda juga bisa melakukan sesuatu sebagai berikut
sumber