Domyślnie perl drukuje \ r \ nw środowisku win32. Jak mogę to zmienić? Używam perla, aby dokonać pewnych zmian w kodzie źródłowym w repozytorium i nie chcę zmieniać wszystkich znaków nowej linii.Jak mogę wydrukować pojedynczy znak nowej linii w Perlu na Win32?
Próbowałem zmienić separator rekordów wyjściowych, ale bez powodzenia.
Dzięki!
Edit: chcielibyście zawierać przykładowy kod - Robię wyszukiwania i zamiany na kilka plików, które następują stosunkowo prosty wzór takiego:
#!/usr/bin/perl
# test.pl
use strict;
use warnings;
$/ = undef;
$\ = "\n";
$^I=".old~";
while (<>) {
while (s/hello/world/) {
}
print;
}
ten powinien zastąpić wszystkie wystąpienia „cześć "with" world "dla wszystkich plików przekazywanych na linii cmd.
Edit 2: Próbowałem binmode
jak sugeruje bez powodzenia początkowo. Zrobiłem jeszcze więcej i odkryłem, że $^I
(zmienna specjalna w miejscu edycji) nadpisuje numer binmode
. Jakieś prace, aby nadal móc korzystać z edycji w witrynie?
Edit 3: W Sinan zaznacza poniżej, musiałem użyć binmode ARGVOUT
z $^I
zamiast binmode STDOUT
w moim przykładzie. Dzięki.
Jeśli zmieniłeś separator rekordów wyjściowych, to była jedyna rzecz, którą możesz zrobić. Zgaduję, że popełniłeś inny błąd (np. Nie podzieliłeś poprawnie linii wejściowych lub nie udawałeś ich). –
Czy możesz podać przykład kodu, który wypisuje '\ r \ n', kiedy go nie chcesz? – Ether
@Sanan, dlaczego założyć, że jestem niechętny? Nie jestem niechętny. Nie mam pod ręką krótkiego scenariusza. Mam bardzo długi, skomplikowany skrypt, który prawdopodobnie nie będzie miał większego sensu i będzie jeszcze bardziej zagmatwany. Dziś wieczorem mogę zrobić skróconą wersję. Myślałem, że włączam odpowiednie części. Nie wiedziałem, że edycja na miejscu była istotna w tym czasie. Dzięki. –