Leser: 1
|< 1 2 >| | 14 Einträge, 2 Seiten |
murphy+2008-11-21 17:17:07--Besser wäre es jedoch, zuerst die Umgebungsvariable VISUAL zu testen, dann EDITOR und dann auf ein Standardprogramm zurückzugreifen.
Traditionell gibt nämlich VISUAL ein Editorprogramm an, welches unter umständen eine grafische, zumindest aber eine bildschirmfüllende Benutzerschnittstelle wie vim oder emacs hat, während EDITOR ein Editorprogramm angibt, das mit minimalen Anforderungen an das Terminal zurechtkommt und deswegen unter Umständen wirklich auf einen primitiven zeilenweiser Editor wie ed eingestellt ist.
In den meisten Fällen sind auf modernen Unices allerdings sowohl EDITOR als auch VISUAL auf den gleichen Editor eingestellt :-)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
#!/usr/bin/perl use strict; use warnings; # zu nutzende Temporäre Datei my $file='/tmp/test.txt'; # Typ der Datei my $file_mime='text/plain'; # Datei erzeugen und mit irgendwas füllen # echo ist einfach am kürzesten :) system("echo Das ist ein test > $file")==0 or die "Konnte \"$file\" nicht erstellen ($@)"; # es gibt module, # die zuverlässig unbenutzte temporäre Dateienamen erzeugen. # für das Beispiel hier nutze ich sie nicht... # offizielle XDG Pfade wo Daten zu finden sind my @xdg_base=grep{$_ ne ''}split(/\:/,$ENV{XDG_DATA_DIRS}); # wir brauchen nur den "applications" Ordner @xdg_base=map{$_.='applications/'}@xdg_base; # Herausfinden was der defaulteditor für diesen MimeType ist # zurück geliefert wird eine *.desktop referenz my $d_file=`xdg-mime query default $file_mime`; die $@ if($@); chomp($d_file); # Die *.desktop Datei suchen for my $path (@xdg_base) { if(-e $path.$d_file) { $d_file=$path.$d_file; last; } } die "$d_file nicht gefunden" if(!-f $d_file); my $d_exec; # Datei auslesen open(my $FH, '<', $d_file) or die "$!"; # uns interessiert nur die "Exec=" Zeile while(<$FH>){chomp; last if(($d_exec)=$_=~/^Exec=(.+)$/i); print "$_\n"} close($FH); die "executable nicht gefunden" unless($d_exec); # %F sind Pfadlisten # %f ist ein Pfad # %U sind URL Listen # %u ist eine URL # Alle kommen mit einer einfachen Datei klar $d_exec=~s/\%F|\%U/$file/gi; # Das Programm starten system($d_exec)==0 or die "$@"; # Datei wieder einlesen my $data=do{ local(@ARGV,$/)=$file; <>; } or die "$!"; # Datei löschen unlink($file) or warn "$!"; # daten ausgeben/verarbeiten print "DATA:\n$data\n";
|< 1 2 >| | 14 Einträge, 2 Seiten |