Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.86k stars 528 forks source link

Backups with perl -i #197

Closed p5pRT closed 20 years ago

p5pRT commented 24 years ago

Migrated from rt.perl.org#1003 (status was 'resolved')

Searchable as RT1003$

p5pRT commented 24 years ago

From carl@tashian.com

Say we create a file and perform an in-place edit on it\, saving the backup​:

[79] carl@​caesar​:\~/testing> echo "1" > test [82] carl@​caesar​:\~/testing> perl -pi.bak -e 's/1/23/g' *

Here are the two files we're left with​:

[81] carl@​caesar​:\~/testing> ls -l total 2 -rw-r--r-- 1 carl users 3 Jul 15 14​:29 test -rw-r--r-- 1 carl users 2 Jul 15 14​:29 test.bak

Now look what happens whene we run another pass on these new files​:

[82] carl@​caesar​:\~/testing> perl -pi.bak -e 's/23/456/g' * [83] carl@​caesar​:\~/testing> ls -l total 3 -rw-r--r-- 1 carl users 4 Jul 15 14​:29 test -rw-r--r-- 1 carl users 4 Jul 15 14​:29 test.bak -rw-r--r-- 1 carl users 3 Jul 15 14​:29 test.bak.bak

'test' and 'test.bak' are identical\, and 'test.bak.bak' contains a backup of 'test'. Is this the expected behavior?

Perl Info ``` Site configuration information for perl 5.00503: Configured by carl at Thu Jun 10 01:13:20 EDT 1999. Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration: Platform: osname=linux, osvers=2.2.9, archname=i386-linux uname='linux caesar 2.2.9 #6 wed jun 9 15:56:34 edt 1999 i586 unknown ' hint=previous, useposix=true, d_sigaction=define usethreads=undef useperlio=undef d_sfio=undef Compiler: cc='cc', optimize='-O2', gccversion=2.7.2.3 cppflags='-Dbool=char -DHAS_BOOL -I/usr/local/include' ccflags ='-Dbool=char -DHAS_BOOL -I/usr/local/include' stdchar='char', d_stdstdio=define, usevfork=false intsize=4, longsize=4, ptrsize=4, doublesize=8 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 alignbytes=4, usemymalloc=n, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lndbm -lgdbm -ldbm -ldb -ldl -lm -lc libc=/lib/libc.so.6, so=so, useshrplib=false, libperl=libperl.a Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic' cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib' Locally applied patches: @INC for perl 5.00503: /usr/lib/perl5/i386-linux /usr/lib/perl5 /usr/lib/perl5/site_perl/i386-linux /usr/lib/perl5/site_perl . Environment for perl 5.00503: HOME=/home/admin/carl LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/usr/local/pgsql/bin:/usr/local/bin:/bin:/usr/bin:/bin:/usr/bin:/usr/lo cal/bin:/usr/X11/bin:.:/usr/X11R6/bin:/usr/openwin/bin:/usr/games:.:/usr/lib/teT eX/bin PERL_BADLANG (unset) SHELL=/bin/tcsh ```